当我访问http://example.com/folder ,我的浏览器redirect到example.com:8080 。
但是,当我访问http://example.com/folder/时,它工作正常。
后端是一个监听端口8080的apache服务器。
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中添加端口。
问题是apache的mod_dir模块将非尾随斜杠403sredirect到带有斜线的URL。
这里是关于mod_dir DirectorySlash文档 。
closures该指令是一个解决方法,但我喜欢DirectorySlashfunction。 只是不想公开的apache后端。
尝试了一些东西后,我终于通过修改我的nginxconfiguration来达到一个工作的解决scheme:
... proxy_set_header Host $host; ...
对此:
... proxy_set_header Host $host:80; ...
这个伎俩! 希望这可以帮助一个人造成这真的让我很头疼。