Tomcat - Proxy inverso en apache hacia tomcat

   
Vista:

Proxy inverso en apache hacia tomcat

Publicado por Carlos (5 intervenciones) el 16/06/2014 18:13:40
Tengo un proxy inverso que me funciona correctamente para acceder a tomcat desde apache, siempre y cuando acceda a la raiz del tomcat.

Sería algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<VirtualHost *:80>
        ServerName www.dominio.com
 
        ProxyRequests Off
        ProxyPreserveHost On
 
        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1
 
        ProxyPass / http://localhost:8080/
        ProxyHTMLURLMap http://localhost:8080/ /
        ProxyPassReverse / http://localhost:8080/
 
        ErrorLog /var/log/apache2/proxy.error.log
        CustomLog /var/log/apache2/proxy.log combined
</VirtualHost>

El problema es que para acceder a mi app (que llamaré app) debo hacer:

www.dominio.com/app

A esto le veo dos problemas y es que www.dominio.com lo responde tambien el ROOT de tomcat, y me gustaría que fuese apache, y que /app es el nombre de mi app, pero si quiero ponerle otra cosa, no funciona.

Querría que si pongo solo el domino responda apache y si accedo a un directorio en especial responda tomcat, pero con la app, no con el ROOT.

Como no consigo hacerlo funcionar he optado por hacerlo por partes, y lo primero que he intentado es que al poner www.dominio.com se me muestre directamente mi app de tomcat y lo he conseguido, pero no funciona correctamente. Pongo aquí el código de site de apache.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<VirtualHost *:80>
        ServerName www.dominio.com
 
        ErrorLog /var/log/apache2/ajp.error.log
        CustomLog /var/log/apache2/ajp.log combined
 
        ProxyRequests Off
        ProxyPreserveHost On
 
        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1
 
        ProxyPass / http://localhost:8080/app/
        ProxyHTMLURLMap http://localhost:8080/app/ /
        ProxyPassReverse / http://localhost:8080/app/
</VirtualHost>

Aquí aparentemente funciona, y me muestra la pantalla de login, pero aunque me encuentra las primeras llamadas, al poner el usuario y la contraseña, comienza a darme error 500 los controladores, como que las siguientes peticiones no están pudiendo ser resueltas.

Si realizo la llamadas en el navegador poniendo la url de tomcat directamente funciona, pero a través del proxy sólo funcionan las primeras. Sería algo así:

POST http://www.dominio.com/ControladorLogin 200 OK 125ms
POST http://www.dominio.com/Html 200 OK 109ms

En este punto tengo cargado el login, pongo usuario y contraseña y pulso login.

POST http://www.dominio.com/ControladorLogin 200 OK 922ms
POST http://www.dominio.com/ControladorConfiguracion 500 Internal Server Error 129ms
POST http://www.dominio.com/Html 500 Internal Server Error 125ms

Notese que la llamada de ControladorLogin la que realiza la comprobación del login, pero tras esta falla el ControladorConfiguración y el Html que antes había funcionado.


¿Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Proxy inverso en apache hacia tomcat

Publicado por Carlos (5 intervenciones) el 21/01/2015 08:42:57
Tras muchas pruebas, hace algún tiempo encontré una solución:

ProxyPass / http://localhost:8080/
ProxyHTMLURLMap http://localhost:8080/ /
ProxyPassReverse / http://localhost:8080/

Y que la aplicación en tomcat se llame app

De esta forma funciona correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar