Tengo una configuración de proxy inverso para acceder a una aplicación de terceros ubicada dentro de una intranet desde Internet. Digamos que esta aplicación está en la URL:
https://internalserver:8080/
(accesible solo desde la intranet)
y el proxy está encendido:
https://proxyserver/
(accesible desde cualquier lugar del mundo)
El proxy es administrado por nginx y funciona bien. Cuando el usuario accede https://proxyserver/
, obtiene el contenido de la aplicación en https://internalserver:8080/
.
El problema es que la aplicación está escribiendo URL absolutas en la respuesta HTML, por lo que, cuando el usuario hace clic en un enlace a una nueva página, el navegador intenta localizar la página con su nombre interno, por ejemplo, en
https://internalserver:8080/somepage
lugar de
https://proxyserver/somepage
.
Sé que este es un error del programa, pero no puedo modificar el programa.
¿Puedo interceptar la respuesta, modificar las URL y enviarla (modificada) al cliente final con nginx? O tal vez con otra herramienta?
EDITAR: Vi esta pregunta antes, pero mi caso es más específico, la pregunta citada pide una modificación genérica. En ese caso, el programa ad hoc fast-cgi es la mejor solución, lo que quiero es una solución más específica para (creo) un escenario más común. Si bien un programa cgi rápido puede funcionar, estoy buscando una solución más fácil y quizás más fuerte y probada en el mundo real para este escenario.
fuente
Respuestas:
Aquí hay un video oficial de Nginx en YouTube que demuestra la reescritura de contenido en línea.
https://youtu.be/7Y7ORypoHhE?t=20m22s
De hecho con sub_filter
http://nginx.org/en/docs/http/ngx_http_sub_module.html
En tu caso, estás viendo algo como:
fuente
http://nginx.org/en/docs/http/ngx_http_sub_module.html
fuente