直接上图:
今天看禹神的前端视频,讲到在nginx中代理路径的时候,有一个规则:
如果/dev和下面的proxy_pass路径最后都带‘/’,那么就是匹配到dev之后要删除dev,然后再带着后面的路径;如果/dev和下面的proxy_pass路径最后都不带‘/’,那么就是匹配到dev之后不会删除dev字段。因为我们项目也需要走nginx配置,就比较感兴趣
而我也看到有一篇文章才知道准确来讲应该这么总结:
如果proxy_pass 端口port后有斜杠/,proxy_pass不拼接location的路径
如果proxy_pass 端口port后无斜杠/,proxy_pass会拼接location的路径
避免以后忘记还是给出一些例子吧,可以加深印象:
//比如原路径是: proxy/device/abc/query
//(1)会被代理到: http://127.0.0.1:81/device/abc/query
location /proxy/ {
proxy_pass http://127.0.0.1:81/; (端口后有路径/)
}
//(2)会被代理到: http://127.0.0.1:81/proxy/device/abc/query
location /proxy/ {
proxy_pass http://127.0.0.1:81; (端口后无路径)
}
//(3)会被代理到: http://127.0.0.1:81/qwer/device/abc/query
location /proxy/ {
proxy_pass http://127.0.0.1:81/qwer/; (端口后有路径/qwer/)
}
//(4)会被代理到: http://127.0.0.1:81/qwerdevice/abc/query
location /proxy/ {
proxy_pass http://127.0.0.1:81/qwer; (proxy_pass 后虽然没有/,但是有path,也就是端口后有路径/qwer)
}
//所以proxy_pass 后面的url + port后面什么也没有的时候才会带上location后面的路径
// 否则url + port后面有路径就不会带上location后面的路径
补充:一般来讲proxy_pass 后面的URL应该是只写到端口,后面不再跟路径了。