当没有提供尾部斜线时,nginxredirect(不是代理)到apache后端

当我访问http://example.com/folder ,我的浏览器redirect到example.com:8080

但是,当我访问http://example.com/folder/时,它工作正常。

后端是一个监听端口8080apache服务器。

nginxconfiguration:

 server { listen 80 default_server; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; proxy_redirect default; } } 

我试过了:

 ... proxy_pass http://127.0.0.1:8080/; .... 

还是一样的问题。 我已经看过类似的问题,但似乎无法得到这个答案。

有人有主意吗?

禁用configuration中的port_in_redirect选项。

 Syntax: port_in_redirect <on | off> Default: on Context: http, server, location 

指令允许或防止由Nginx处理的redirect中的端口指示。 如果port_in_redirect off ,那么当请求被redirect时,Nginx将不会在URL中添加端口。

问题是apachemod_dir模块将非尾随斜杠403sredirect到带有斜线的URL。

这里是关于mod_dir DirectorySlash文档 。

closures该指令是一个解决方法,但我喜欢DirectorySlashfunction。 只是不想公开的apache后端。

尝试了一些东西后,我终于通过修改我的nginxconfiguration来达到一个工作的解决scheme:

 ... proxy_set_header Host $host; ... 

对此:

 ... proxy_set_header Host $host:80; ... 

这个伎俩! 希望这可以帮助一个人造成这真的让我很头疼。