我有一个非常恼人的问题,我使用nginx代理apache服务器(http://internalip.com:18080),配置是这样的:
location /svn {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://internalip.com:18080;
}
这是最及时的,但有时nginx只是将用户重定向到内部地址,因此用户将会出现提示错误。 我不知道出了什么问题,它正在发生。 nginx版本是1.4.4-4~precision0。 有谁知道这个? 提前谢谢!
答案 0 :(得分:0)
我发现了问题。
关键点是Apache DirectorySlash,如果我访问https://outipaddress.com/theurl,即使X-Forword- *标题是apache,apache也会重定向到http://internalip.com:18080/theurl/组。我认为这是apache httpd的一个bug。
解决方法是在nginx端执行重定向。
`location /svn/ { if ($request_uri ~ "/[a-zA-Z0-9-_]+$") { rewrite ^ https://$server_name$request_uri/; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://internalip.com:18080; }`
现在nginx将重定向所有未以斜杠结尾的网址,并且看起来像一个目录(仅包含符号字符)。