Nginx:proxy_pass 忽略端口

Nginx:proxy_pass 忽略端口

我有一个使用 Swagger 的应用程序localhost:8080/swagger/

我需要从 重定向localhost:80到实际的 swagger url,因此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

您可以修改监听端口 80 的服务器块的 listen 指令,使其也包含端口号:

listen 80 default_server;

这将使 Nginx 监听端口 80 并将流量路由到 http://localhost:8080/swagger/,同时保留 URL 中的端口号。

相关内容