Nginx: proxy_pass игнорирует порт

Nginx: proxy_pass игнорирует порт

У меня есть приложение Swagger на localhost:8080/swagger/.

Мне нужно перенаправление с localhost:80реального URL-адреса Swagger, поэтому localhost:8080/swagger/я настраиваю обратный прокси-сервер 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;
    }
}

Итак, когда я вхожу, localhost:80я получаю код 301 и перенаправляюсь на localhost:80/swagger/index.html. Но мне нужен порт 8080, почему nginx игнорирует порт в proxy_pass?

решение1

Вы можете изменить директиву listen для блока сервера, прослушивающего порт 80, чтобы также включить номер порта:

listen 80 default_server;

Это заставит Nginx прослушивать порт 80 и направлять трафик на http://localhost:8080/swagger/, сохраняя при этом номер порта в URL.

Связанный контент