我有一个运行 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;
}
}
在我的局域网中工作得很好。
我现在正在设置与 Internet 的外部连接。我使用带有虚拟服务器配置的 TP-LINK TL-R470T+ 来重定向我的端口(外部的 8000 到内部的 80):
当我尝试从外部访问我的浏览器时,我使用:
http://170.80.200.100:8000/landing/
一切都很好。
当我需要在 Web 应用程序上切换页面时,我的问题就出现了。每次导航时,我都会返回到没有端口的网址,例如(IP 地址不是真实的地址):
http://170.80.200.100/landing/
或者
http://170.80.200.100/analytics/
因此,每次我导航到不同的页面时,我都需要在地址栏中手动输入 :8000,这是不切实际的。
当我从互联网访问时,如何设置 NGINX 文件以在每个访问的 URL 上保留原始端口 (:8000)?
请注意,我尝试将内部端口从 80 更改为 8000,当从内部 LAN 访问该端口时,应用程序运行良好,但我无法在内部将其设置为 8000,需要在外部将其设置为 8000。