web-dev-qa-db-fra.com

Apache et Tomcat: ProxyPass et ProxyPassReverse

J'ai des problèmes pour configurer Apache et Tomcat, voici le scénario:

J'ai un serveur Web Apache, fonctionnant et fonctionnant normalement, je peux accéder à celui-ci en tapant simplement:

http://localhost

De plus, dans cet hôte, j'ai un Tomcat qui fonctionne et fonctionne bien; J'ai créé une mini application web dont les fichiers se trouvent dans le répertoire "prueba", je peux accéder en tapant:

http://localhost:8080/prueba

(Je sais qu'Apache s'exécute dans le port 80 et Tomcat dans 8080)

Ce que je veux faire, c'est que grâce à Apache, un utilisateur peut accéder à "pruebas" (fonctionnant sur Tomcat), je veux dire:

http://localhost/prueba

J'ai lu beaucoup de ceci, et je pense qu'il y a 2 façons de le faire, et j'ai décidé d'activer les modules proxy (proxy et proxy_ajp, avec a2enmod), j'ai également lu que je dois modifier ce fichier: sites disponibles/par défaut, voici le contenu:

NameVirtualHost *:80
<VirtualHost *:80>
     ServerName 127.0.0.1
     DocumentRoot /var/www

     ProxyRequests Off
     ProxyPreserveHost On

     ProxyPass /static/ !
     ProxyPass / ajp://localhost:8009/
     ProxyPassReverse / ajp://localhost:8009/

.
.
.
     Alias /static/ "/Apache/www/"

</VirtualHost>

Mais cela n'a pas fonctionné correctement :(

Je dois dire que j'ai essayé avec de nombreux changements, sur ces 2 lignes, comme:

     ProxyPass /prueba ajp://localhost:8009/prueba
     ProxyPassReverse /prueba ajp://localhost:8009/prueba

ou

     ProxyPass / ajp://localhost:8009/prueba
     ProxyPassReverse / ajp://localhost:8009/prueba

(chaque fois que je modifie le fichier, je redémarre Apache)

Mais lorsque j'accède à [http: // localhost/prueba /], j'ai: Service temporairement indisponible

Quelqu'un sait-il pourquoi? Merci d'avance les gars.

Pd: Je travaille avec Apache 2.2.17 et Tomcat6.

15
karlos9o

Vous devez mettre

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

sur votre hôte virtuel Apache

Ensuite, vous devez décommenter l'écouteur ajp dans Tomcat

<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

Ensuite, vous devez configurer l'hôte et le chemin de contexte dans server.xml

REFF: http://www.ntu.edu.sg/home/ehchua/programming/howto/ApachePlusTomcat_HowTo.html

J'espère que cela vous aidera..

12
Dilip Rajkumar

ProxyPassReverse définit l'URL dans laquelle Apache httpd devrait réécrire les URL, qui redirigeraient vers l'URL proxy (masquée). Pour cette raison, vous devez changer votre ligne ProxyPassReverse en quelque chose comme ceci:

ProxyPassReverse / http://localhost/prueba/

Voir aussi: http://httpd.Apache.org/docs/2.2/mod/mod_proxy_ajp.html#usage

2
Manuel Faux

Essaye ça:

ProxyPass /prueba/ http://localhost:8009/prueba/
ProxyPassReverse /prueba/ http://localhost:8009/prueba/

puis appuyez sur l'URL suivante à partir du navigateur: http: // localhost/prueba /

note: il est obligatoire d'ajouter "/ prueba /"

1
Vinod Kumar Gupta

Le service non disponible pourrait venir à cause de SELinux, essayez de désactiver SE Linux: setenforce 0

0
Ankush Tehale

vous pouvez essayer d'ajouter:

ProxyPreserveHost On

D'après la documentation :

"Lorsqu'elle est activée, cette option transmet la ligne Host: de la demande entrante à l'hôte mandaté, au lieu du nom d'hôte spécifié dans la ligne ProxyPass.

Cette option doit normalement être désactivée. Il est surtout utile dans des configurations spéciales comme l'hébergement virtuel basé sur un nom de masse proxy, où l'en-tête Host d'origine doit être évalué par le serveur principal. "

0

Vous avez déclaré: je peux accéder à la saisie:

http: // localhost : 8080 /prueba

mais ce qui suit ne fonctionne pas:

ProxyPass/prueba/ http: // localhost : 8009 /prueba /

8080! = 8009

assurez-vous que vos numéros de port sont les mêmes

0
Mark