Nginx proxy_pass无法正常运行而没有斜杠

时间:2016-04-28 14:53:25

标签: nginx mod-proxy proxypass

我已就此问题进行了一些搜索,并找到了与此相似的其他帖子,但没有一个解决方案对我有帮助。

我的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/

但它似乎并没有什么不同。这之前很有用,我还没有真正搞乱这个位置节,所以我想知道它是否与我的其他位置有关。

任何提示?

1 个答案:

答案 0 :(得分:1)

您实际上没有指定 IN WHICH WAY 它不起作用,但这听起来像the proxy_redirect directive应该可以解决的问题。

proxy_redirect http://webapp.service.consul/webApp/ http://example.com/webApp/

(但是,最好的解决方案可能是确保在其余配置文件中正确指定主机名。)