Paso relativo de archivos estáticos de proxy inverso de nginx

Paso relativo de archivos estáticos de proxy inverso de nginx

Tengo una configuración de proxy inverso simple con nginx (que se ejecuta en un contenedor acoplable con certbothttps://github.com/umputun/nginx-le) como servidor web example.comy 192.168.0.220:80donde se ejecuta mi aplicación. Hay configuración:

server {
    listen   443 ssl;
    server_name example.com;
    charset utf-8;

    ssl_certificate         SSL_CERT;
    ssl_certificate_key     SSL_KEY;
    ssl_trusted_certificate SSL_CHAIN_CERT;

    location /smarthome/ {
        proxy_pass http://192.168.0.220:80/;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Origin '';
    }
}

Y una página web con recursos estáticos definidos así<script src="/js/home.js"></script>

El problema es que cuando accedo example.com/smarthomeno carga mis recursos estáticos. En consola:

https://example.com/js/home.js/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome/smarthome net::ERR_TOO_MANY_REDIRECTS

Pero se esperaba obtener el formulario de recursos estadísticos, https://example.com/smarthome/js/home.jspero parece entrar en un bucle de redireccionamiento.

Puede que se me escape algo muy simple, pero no puedo encontrar la solución mientras me invade la frustración. ¡Gracias por la ayuda de antemano!

Respuesta1

Según su configuración de Nginx, debe definir la ubicación raíz. De lo contrario, siempre redirige el bucle.

Puedes hacer el archivo de configuración así:

server {
    listen   443 ssl;
    server_name example.com;
    charset utf-8;

    ssl_certificate         SSL_CERT;
    ssl_certificate_key     SSL_KEY;
    ssl_trusted_certificate SSL_CHAIN_CERT;

    location / {
        proxy_pass http://192.168.0.220:80;
    }

    location /smarthome/ {
        proxy_pass http://192.168.0.220:80/;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Origin '';
    }
}

información relacionada