反向代理的nginx在redirect目录索引请求时暴露端口号

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

该设置大部分工作正常。 但是,如果对目录发出请求,nginx将返回一个301redirect,端口设置为8080。

所有我能find的问题都是关于nginx是一个反向代理而不是实际的服务器。 任何帮助将非常感激!

为了解决这个问题,URL http://example.com/dir/工作正常。 但是留下斜杠http://example.com/dir会导致浏览器redirect到http://example.com:8080/dir

有这个port_in_redirect指令。 你应该关掉它。

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

此外,最好使用诸如curlwget类的控制台工具来testingredirect(尤其是永久性redirect),因为您的浏览器可能已经caching了redirect,并且只是在没有实际命中的情况下使用它(这是永久性redirect的主要原因)。