反向代理 nginx 在重定向目录索引请求时公开端口号

反向代理 nginx 在重定向目录索引请求时公开端口号

我有用于提供静态文件的 nginx 后端。Nginx 在非标准端口(例如 8080)上运行。它可通过端口 80 上的反向代理公开访问。

大部分情况下,设置都运行正常。但是,如果对目录发出请求,nginx 将返回 301 重定向,并将端口设置为 8080。

我发现的所有问题都是关于 nginx 作为反向代理而不是实际服务器。任何帮助都将不胜感激!

作为此问题的一个例子,URLhttp://example.com/dir/工作正常。但是留下尾部斜杠http://example.com/dir会导致浏览器重定向到http://example.com:8080/dir

答案1

port_in_redirect指令。您应该将其关闭。

server {
    ...
    port_in_redirect off;
    ...
}

此外,最好使用curl或等控制台工具测试重定向(尤其是永久重定向) wget,因为您的浏览器可能已经缓存了重定向,并且只会使用它而不会实际访问服务器(这是永久重定向的主要原因)。

相关内容