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/analytics/
したがって、別のページに移動するたびにアドレスバーに:8000を手動で入力する必要がありますが、これは実用的ではありません。
インターネットからURLにアクセスしたときに訪問したすべてのURLで元のポート(:8000)を維持するようにNGINXファイルを設定するにはどうすればよいですか?
内部ポートを80から8000に変更してみましたが、内部LANで接続するとアプリケーションがうまく動作しますが、内部的には8000に設定できず、外部的には8000に設定する必要があることをご参照ください。