重定向后反向代理不重写位置

时间:2016-08-19 12:32:32

标签: apache redirect proxy reverse-proxy

我有一个像这样的apache反向代理设置:

<Location /test>
  ProxyPass https://exampleUrl.com retry=0 ttl=50
  ProxyPassReverse https://exampleUrl.com
</Location>

我正在发送一个令牌,以我的请求登录https://localUrl/test/login.php?token=

我被远程服务器重定向,反向代理正确地将位置重写为:/ test/sso.php?id = 61127

我对/test/sso.php?id=61127的请求再次被重定向,但这次没有正确重写位置:/status/sso.php

所以它试图在我自己的服务器上找到资源,而它应该指向代理:/test/status/sso.php

我做错了什么,为什么没有重写第二个重定向位置?

1 个答案:

答案 0 :(得分:0)

首先,你应该总是匹配ProxyPass指令中的斜杠,也就是说,在这种情况下:https://exampleUrl should be https://exampleUrl/因为它是什么,你应该在ProxyPassReverse指令中做同样的事情

在任何情况下,最好检查后端的回复,将以下内容添加到您正在使用的LogFormat中:

%{Location}o

它将打印后端发送的任何位置,并帮助您了解出现了什么问题,如果匹配的斜杠没有解决您的问题,以防您的后端发送/ status /您没有代理。