pass example apache redirect reverse-proxy http-status-code-302

example - Apache: proxy inverso y mensaje de estado HTTP 302



apache virtual host reverse proxy (3)

Intente utilizar el conector AJP en lugar del proxy inverso. Ciertamente, no es un cambio trivial, pero he descubierto que muchas de las pesadillas de URL desaparecen cuando se usa AJP en lugar de proxy inverso.

Mi equipo está intentando configurar un proxy inverso de Apache desde el sitio de un cliente en una de nuestras aplicaciones web.

http://www.example.com/app1/some-path se asigna a http://internal1.example.com/some-path

Dentro de nuestra aplicación usamos struts y tenemos redirect = true set en ciertas acciones para proporcionar cierta funcionalidad. Los mensajes de estado 302 de estos redireccionamientos provocan que el usuario salga del proxy, lo que da como resultado una página de error para el usuario final.

HTTP / 1.1 302 Ubicación encontrada: http://internal.example.com/some-path/redirect

¿Hay alguna forma de configurar el proxy inverso en apache para que las redirecciones funcionen correctamente?

http://www.example.com/app1/some-path/redirect


Hay un artículo titulado Ejecutando un proxy inverso en Apache que parece resolver su problema. Incluso utiliza el mismo example.com y / app1 que tiene en su ejemplo. Vaya a la sección "Configurando el Proxy" para ver ejemplos sobre cómo usar ProxyPassReverse .


El artículo AskApache es bastante útil, pero en la práctica encontré una combinación de reglas Rewrite y ProxyPassReverse para ser más flexible. Entonces en tu caso, haría algo como esto:

<VirtualHost example> ServerName www.example.com ProxyPassReverse /app1/some-path/ http://internal1.example.com/some-path/ RewriteEngine On RewriteRule /app1/(.*) http://internal1.example.com/some-path$1 [P] ... </VirtualHost>

Me gusta más porque te da un control más detallado sobre las rutas que estás aprovisionando para el servidor interno. En nuestro caso, queríamos exponer solo una parte de la aplicación de terceros. Tenga en cuenta que esto no aborda los enlaces codificados en HTML, que cubre el artículo de AskApache.

Además, tenga en cuenta que puede tener múltiples líneas ProxyPassReverse:

ProxyPassReverse / http://internal1.example.com/some-path ProxyPassReverse / http://internal2.example.com/some-path

Menciono esto solo porque otra aplicación de terceros a la que estábamos enviando enviaba redirecciones que no incluían su nombre de host interno, solo un puerto diferente.

Como nota final, tenga en cuenta que Firebug es extremadamente útil al depurar los redireccionamientos.