proxy_pass后加不加斜杠的区别

背景

在nginx中配置proxy_pass时,当在后面的url上加不加/,区别是如此的大呢。

如加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;

如果没有加/,则会把匹配的路径部分也给代理走。

Location的目录匹配详解

1
2
3
4
5
没有“/”时,可以模糊匹配字符串本身和后面所有
例如:location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等

而有“/”时,只能匹配后面
例如:location /abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求

Proxy_pass后url区别详解

下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。

第一种:加/

1
2
3
location  /proxy/ {
proxy_pass http://127.0.0.1:81/;
}

结论:会被代理到http://127.0.0.1:81/test.html 这个url

第二种: 不加/

1
2
3
location  /proxy/ {
proxy_pass http://127.0.0.1:81;
}

结论:会被代理到http://127.0.0.1:81/proxy/test.html 这个url

第三种: 加目录加/

1
2
3
location  /proxy/ {
proxy_pass http://127.0.0.1:81/ftlynx/;
}

结论:会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。

第四种:加目录不加/

1
2
3
location  /proxy/ {
proxy_pass http://127.0.0.1:81/ftlynx;
}

结论:会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url

总结

location目录字符串后加/,就只能匹配后面,不加不仅可以匹配后面还可字符串模糊匹配。

proxy_pass加/, 代理地址就不加location匹配目录; 不加/,代理直接就加目录。

-------------本文结束感谢您的阅读-------------

本文标题:proxy_pass后加不加斜杠的区别

文章作者:WanDouDuoDuo

发布时间:2019年06月05日 - 14:06

最后更新:2019年11月01日 - 13:11

原始链接:https://wandouduoduo.github.io/articles/98a39ceb.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

原创技术分享,您的支持将鼓励我继续创作