背景
Nginx 配置反向代理,将本地监听于非 443 端口的 HTTP 服务映射到公网。通过公网 HTTPS 域名访问首页正常,当访问目录路径且未添加尾部斜杠(例如 /admin)时,浏览器地址栏跳转至错误的地址。URL 显示为 http://域名:端口/admin/。该地址暴露了本地端口且协议降级,导致公网无法访问。
原因
Nginx 处理目录请求时,若路径未包含尾部斜杠,会执行 301 重定向以补充斜杠。默认配置下,Nginx 在构造重定向 URL 时会将其监听的本地端口拼接进地址。这导致客户端收到的重定向地址与实际公网访问端口(443)不一致。
方案
在 Nginx 配置文件的 server 块中添加 port_in_redirect off; 指令。
配置示例:
| |
修改配置后执行 nginx -s reload 重载服务。
结论
该指令禁止 Nginx 在生成重定向 URL 时附加端口号,解决了非标准端口反向代理场景下的端口错误问题。