Question

En raison de horrible, des erreurs horribles , nous » avons changé la façon dont nous nous connectons Apache Tomcat. Nous utilisions mod_jk:

JkMount /path ajp13

Maintenant, nous utilisons mod_proxy_ajp:

ProxyPass /path ajp://localhost:8009/path
ProxyPassReverse /path ajp://localhost:8009/path

Cependant, il y a une fonctionnalité qui JkMount offert, mais ProxyPass n'a pas: la possibilité de sélectionner des types de fichiers. Ceci a permis aux fichiers html proxy, mais pas les images - autrement dit, de laisser le beau Apache rapide servent les choses statiques, et le recours à la Tomcat lente que pour les choses dynamiques

.
JkMount /*.html ajp13

Y at-il moyen d'y parvenir avec ProxyPass? Peut-être en utilisant une directive <Location> entourant ou quelque chose comme ça?

Était-ce utile?

La solution

Utilisez ProxyPassMatch :

ProxyPassMatch ^/(path/.*\.html)$ ajp://localhost:8009/$1

Sous la direction: correction de Marcus Downing

Autres conseils

pas votre problème, mais quelque chose à surveiller pour utiliser cette configuration. Lors de l'utilisation mod_proxy apache pour se connecter à tomcat mon journal d'erreur montrait des connexions a chuté sous une charge modérée. L'ajout de ce à httpd.conf résolu mes problèmes.

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

poste de kmkaplan est la bonne réponse, mais il m'a donné l'erreur:

Syntax error on line 32 of .../httpd-vhosts.conf:
ProxyPass Unable to parse URL

Il a travaillé quand j'ai changé la directive comme suit:

ProxyPathMatch ^/(path/.*\.html)$ ajp://localhost:8009/$1

Je ne peux que supposer que mettre le $1 juste à côté du numéro de port 8009 était le confondre.

Nous utilisons les éléments suivants pour laisser Apache servir les images et définir les en-têtes expires raisonnable:

<Virtualhost *:80>
    ServerName domain.com
    ServerAlias *.domain.com

    Alias /img/ /var/www/domain/img/
    <Directory /var/www/domain/img/>
        ExpiresActive On
        ExpiresByType image/gif "access plus 1 months"
        ExpiresByType image/jpg "access plus 1 months"
        ExpiresByType image/jpeg "access plus 1 months"
        ExpiresByType image/png "access plus 1 months"
        ExpiresByType image/x-icon "access plus 1 months"
        ExpiresByType image/ico "access plus 1 months"
        # This will prevent apache from having to check for a .htaccess file on each request.
        AllowOverride None
        # Allow symlinks. Otherwise, apache will make a separate call on each filename to ensure it is not a symlink.
        Options +FollowSymLinks -SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    # Prevent domain.com/img from being served by Tomcat
    ProxyPass /img !

    # Pass all other requests to Tomcat
    ProxyPass / ajp://localhost:8009/

    # 1. Note that usually no ProxyPassReverse directive is necessary. The AJP request includes
    #    the original host header given to the proxy, and the application server can be expected to
    #    generate self-referential headers relative to this host, so no rewriting is necessary. 
    # 2. If you still want to use it, read this first:
    #    http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html
    # ProxyPassReverse / http://domain.com/
</Virtualhost>

Cependant, comme vous pouvez le voir, nous stocker des images en dehors de notre application Tomcat. Je ne sais pas si cela fonctionne aussi pour les images dans l'application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top