nginx: ¿Cómo agregar una ruta URI al host en la directiva proxy_pass?

nginx: ¿Cómo agregar una ruta URI al host en la directiva proxy_pass?

Problema:

  • Utilizo una proxy_passdirectiva nginx para redirigir httpssolicitudes con una ruta específica locationen el URI, por ejemplo, https://domain/path/index.htmla http://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.

información relacionada