Redirect Nginx有时会错误地重定向到后端内部url

Redirect Nginx有时会错误地重定向到后端内部url,redirect,nginx,proxy,Redirect,Nginx,Proxy,我有一个非常恼人的问题,我使用nginx代理apache服务器(),配置如下: 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; p

我有一个非常恼人的问题,我使用nginx代理apache服务器(),配置如下:

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~precise0。 有人知道吗?
提前谢谢

我发现了问题。
关键点是Apache DirectorySlash,如果我访问,Apache将重定向到,即使设置了X-Forword-*头。我认为这是apachehttpd的一个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; }` `地点/svn/{ 如果($request_uri~“/[a-zA-Z0-9-_]+$”){ 重写^https://$server\u name$request\u uri/; } 代理设置头主机$Host; 代理集头X-Real-IP$remote\u addr; 代理集头X转发协议https; proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For; 代理通行证http://internalip.com:18080; }`
现在,nginx将重定向所有不以斜杠结尾的URL,这些URL看起来像一个目录(只包含符号字符)。

我99%确定这是后端的错误。后端是一个非常简单的apache服务器,带有mod_dav_svn。