我已就此问题进行了一些搜索,并找到了与此相似的其他帖子,但没有一个解决方案对我有帮助。
我的Nginx配置中有一个edit_quiz_b_path(@quiz_bs)
条目,其中包含location
规则,但只有在我向网址添加尾部斜杠时才能生效。
这里是位置节
proxy_pass
你可以看到,当我使用 location /webApp {
proxy_pass https://webapp.service.consul/webApp;
proxy_set_header Host webapp.service.consul;
proxy_intercept_errors on;
}
并转到curl
(带有斜杠)时,它可以正常工作 - 并且cookie按预期设置:
/webApp/
然而,当我去MacBook-Pro:~ $ curl -I https://example.com/webApp/
HTTP/1.1 302 Found
Server: nginx/1.9.11
Date: Thu, 28 Apr 2016 14:45:55 GMT
Content-Length: 0
Connection: keep-alive
Set-Cookie: JSESSIONID=440B8D729469BBD80FC92796754D9475; Path=/providerApp/; HttpOnly
Location: http://webapp.service.consul/webApp/login.do;jsessionid=440B8D729469BBD80FC92796754D9475
(没有斜杠)时,我得到/webApp
,但我没有像我那样被重定向到302 Found
页面用斜杠:
/webApp/login.do
我尝试过添加重写规则,例如:
MacBook-Pro:~$ curl -I https://example.com/webApp
HTTP/1.1 302 Found
Server: nginx/1.9.11
Date: Thu, 28 Apr 2016 14:48:44 GMT
Connection: keep-alive
Location: http://webapp.service.consul/webApp/
但它似乎并没有什么不同。这之前很有用,我还没有真正搞乱这个位置节,所以我想知道它是否与我的其他位置有关。
任何提示?
答案 0 :(得分:1)
您实际上没有指定 IN WHICH WAY 它不起作用,但这听起来像the proxy_redirect
directive应该可以解决的问题。
proxy_redirect http://webapp.service.consul/webApp/ http://example.com/webApp/
(但是,最好的解决方案可能是确保在其余配置文件中正确指定主机名。)