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:80301 コードを受信し、 にリダイレクトされますlocalhost:80/swagger/index.html。 しかし、ポート が必要なのです8080が、なぜ nginx は proxy_pass のポートを無視するのでしょうか?

答え1

ポート 80 でリッスンするサーバー ブロックの listen ディレクティブを変更して、ポート番号も含めることができます。

listen 80 default_server;

これにより、Nginx はポート 80 でリッスンし、URL のポート番号を保持したままトラフィックを http://localhost:8080/swagger/ にルーティングします。

関連情報