Este es un seguimiento de mi pregunta anterior sobre cómo Haga que el proxy 302 inverso de nginx redirija a una subcarpeta URI en lugar de a la raíz .
Tengo un servidor proxy nginx que utiliza el rewrite
y proxy_pass
Directivas para enviar solicitudes externas a una URL como https://domain.com/my/web/app/
a un servidor LAN interno en https://10.0.0.22/
. Aquí está mi intento de representar la traducción en ASCII UML:
.-------------. .------------------.
| Nginx proxy | | Local web server |
| (domain.com) | | (10.0.0.22) |
'-------------' '------------------'
| |
| |
GET https://domain.com/my/web/app/ ----------->| |
|---------------->| GET /
| |
|<----------------| 302 redirect /login.php
302 redirect /my/web/app/login.php <-----------| |
| |
GET https://domain.com/my/web/app/login.php -->| |
|---------------->| GET /login.php
| |
|<----------------| 200
HTML body content (images, CSS, links) <-------|
Aquí está el bloque de ubicación real en mi archivo de configuración nginx:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
Funciona muy bien para la traducción de URI entre las rutas de URI internas y externas para las solicitudes y respuestas HTTP, pero no se traduce ningún URI en el contenido HTML (imágenes del cuerpo, CSS, scripts).
Por ejemplo, las imágenes con rutas relativas incrustadas en la respuesta HTML, con URI como /images/logo.png, se devuelven al cliente web y se interpretan como https://domain.com/images/logo.png
en lugar de https://domain.com/my/web/app/images/logo.png
.
Puedo entender por qué está sucediendo esto, pero sería maravilloso si hubiera una manera de representar el contenido y las solicitudes de forma dinámica. ¿Hay alguna forma de que nginx también convierta URI incrustados en el contenido HTML? ¿Es posible analizar y actualizar dinámicamente el contenido HTML a medida que pasa a través del servidor proxy?