![反向代理 nginx 在重定向目录索引请求时公开端口号](https://linux22.com/image/636754/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%20nginx%20%E5%9C%A8%E9%87%8D%E5%AE%9A%E5%90%91%E7%9B%AE%E5%BD%95%E7%B4%A2%E5%BC%95%E8%AF%B7%E6%B1%82%E6%97%B6%E5%85%AC%E5%BC%80%E7%AB%AF%E5%8F%A3%E5%8F%B7.png)
我有用于提供静态文件的 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
,因为您的浏览器可能已经缓存了重定向,并且只会使用它而不会实际访问服务器(这是永久重定向的主要原因)。