仮想サーバーの背後からnginxにアクセスすると、ポート番号が失われます。

仮想サーバーの背後からnginxにアクセスすると、ポート番号が失われます。

nginxを実行するDebianサーバーがあり、そのnginx設定は次のとおりです。

server {
  listen 80 default_server;

  root /var/www/serviceserver1;
  index index.html index.htm;      

  location /api {
        proxy_redirect          http://localhost:3001/  /api;
        proxy_pass_header       Server;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Scheme $scheme;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-NginX-Proxy true;
        proxy_connect_timeout   5;
        proxy_read_timeout      240;
        proxy_intercept_errors  on;

        proxy_pass              http://localhost:3001;
    }

    location /graphql {
        proxy_redirect          http://localhost:3001/  /graphql;
        proxy_pass_header       Server;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Scheme $scheme;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-NginX-Proxy true;
        proxy_connect_timeout   5;
        proxy_read_timeout      240;
        proxy_intercept_errors  on;

        proxy_pass              http://localhost:3001;
   }

  # Root route
  location = / {
    try_files $uri /landing/index.html;
  }

  # admin routes
  location /admin {
    try_files $uri $uri/ /admin/index.html;
  }

  # analytics routes
  location /analytics {
    try_files $uri $uri/ /analytics/index.html;
  }

  # landing routes
  location /landing {
    try_files $uri $uri/ /landing/index.html;
  }

  # Any other route default to landing
  location / {
    try_files $uri $uri/ /landing/index.html;
  }
}

私のLANではうまくいきます。

現在、インターネットへの外部接続を確立しています。仮想サーバー構成でTP-LINK TL-R470T +を使用してポート(8000の外部から80の内部)をリダイレクトします。

ここに画像の説明を入力してください。

外部からブラウザにアクセスしようとするときは、次を使用します。

http://170.80.200.100:8000/landing/

みんな大丈夫です。

Webアプリケーションでページを切り替える必要があるときに問題が発生します。移動するたびに、ポートのないURLに戻ります。たとえば、IP アドレスは物理アドレスではありません。

http://170.80.200.100/landing/

http://170.80.200.100/admin/

または

http://170.80.200.100/analytics/

したがって、別のページに移動するたびにアドレスバーに:8000を手動で入力する必要がありますが、これは実用的ではありません。

インターネットからURLにアクセスしたときに訪問したすべてのURLで元のポート(:8000)を維持するようにNGINXファイルを設定するにはどうすればよいですか?


内部ポートを80から8000に変更してみましたが、内部LANで接続するとアプリケーションがうまく動作しますが、内部的には8000に設定できず、外部的には8000に設定する必要があることをご参照ください。

ベストアンサー1

おすすめ記事