Nginx: proxy_pass ignora el puerto

Nginx: proxy_pass ignora el puerto

Tengo una aplicación con Swagger activado localhost:8080/swagger/.

Necesito una redirección desde localhost:80la URL real de swagger, por lo que localhost:8080/swagger/configuro un proxy inverso de Nginx:

server {
    listen 80;

    server_name=_;
    
    location / {
           proxy_pass http://localhost:8080/swagger/;
           proxy_redirect off;
           proxy_set_header Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Entonces, cuando entro, localhost:80recibo el código 301 y lo redirecciono a localhost:80/swagger/index.html. Pero necesito el puerto 8080, ¿por qué nginx ignora el puerto en proxy_pass?

Respuesta1

puede modificar la directiva de escucha para el bloque del servidor que escucha en el puerto 80 para incluir también el número de puerto:

listen 80 default_server;

Esto hará que Nginx escuche en el puerto 80 y enrute el tráfico a http://localhost:8080/swagger/ manteniendo el número de puerto en la URL.

información relacionada