Problema:
- Utilizo una
proxy_pass
directiva nginx para redirigirhttps
solicitudes con una ruta específicalocation
en el URI, por ejemplo,https://domain/path/index.html
ahttp://container_ip:port/index.html
. - Esto funciona bien para la solicitud inicial.
- Sin embargo, si el archivo HTML especifica recursos para cargar, los clientes buscan estos recursos sin la ruta, utilizando sólo la URL base; en el ejemplo
https://domain/main.css
.
Pregunta:
¿Cómo puedo configurar nginx para que dichos recursos también se busquen en la ruta original? en el ejemplo en https://domain/path/main.css
?
Configuración actual incorrecta de nginx:
server {
listen 443 ssl;
server_name domain;
[...]
location /path/ {
proxy_set_header Host $host;
proxy_pass http://container_ip:port/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Respuesta1
Las rutas a los recursos las genera su aplicación. El enfoque adecuado y confiable es arreglar su aplicación para generar URL de recursos con rutas correctas.
Si desea una solución no confiable, puede intentar usarhttp://nginx.org/en/docs/http/ngx_http_sub_module.htmlpara reemplazar las URL de recursos en las respuestas que nginx representa. Sin embargo, existe la posibilidad de que se produzcan efectos secundarios no deseados que pueden ser difíciles de diagnosticar.