我有一个像这样的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
我做错了什么,为什么没有重写第二个重定向位置?
答案 0 :(得分:0)
首先,你应该总是匹配ProxyPass指令中的斜杠,也就是说,在这种情况下:https://exampleUrl should be https://exampleUrl/
因为它是什么,你应该在ProxyPassReverse指令中做同样的事情
在任何情况下,最好检查后端的回复,将以下内容添加到您正在使用的LogFormat中:
%{Location}o
它将打印后端发送的任何位置,并帮助您了解出现了什么问题,如果匹配的斜杠没有解决您的问题,以防您的后端发送/ status /您没有代理。