round robin pass mod_proxy_balancer inverso example configurar como balancing balancermember balancer tomcat reverse-proxy jsessionid

tomcat - robin - proxy pass reverse apache



Cómo establecer correctamente la ruta de la cookie JSESSIONID detrás del proxy inverso (3)

Mi aplicación web se ejecuta en Tomcat en http://localhost:8080/example.com/ pero está siendo proxy inverso desde Apache que está publicando http://example.com/ en el puerto 80. Mi aplicación web mira el request.getHeader("x-forwarded-host") encabezado para saber que está detrás de un proxy inverso. Cuando detecta esto (dinámicamente) construye URLs sin la ruta del servlet en ellas.

Esto funciona bien para todo excepto para la cookie JSESSIONID. Se establece con una ruta de /example.com lugar de / cuando se accede a través del proxy inverso. No puedo entender cómo puedo hacer que mi código le indique a Tomcat que anule la ruta de esa cookie cuando hay un encabezado x-forwarded-host en la solicitud.

Intenté configurar la cookie JSESSIONID desde la aplicación web, pero eso solo da como resultado dos encabezados Set-Cookie, de los cuales solo uno es correcto.




Tomcat6 usa la especificación de Servlet 2.3. No es compatible con cambiar la ruta de la cookie a través del código o la configuración de Tomcat.

Lo hice para trabajar desde el lado Apache con algunas directivas mod_proxy . La directiva ProxyPassReverseCookiePath hace exactamente lo que yo quiero. Toma la cookie de Tomcat con la ruta incorrecta y la reescribe en la ruta correcta.

<VirtualHost *:*> Servername example.com ProxyRequests Off ProxyPass / http://localhost:8080/example.com/ ProxyPassReverseCookiePath /example.com / ProxyPassReverseCookieDomain localhost example.com </VirtualHost>