先给出结果
(1)^~开头是前缀匹配,location后面加 / 也是前缀匹配,只不过匹配范围比不加 / 要小
(2)proxy_pass 端口后面没有 / ,则会将 location 及其后缀的内容完全拼接到 proxy_pass 所配置的地址后
(3)proxy_pass 端口后面有 /,则仅会将 location 的后缀拼接到 proxy_pass 所配置的地址后
localtion后面需要带“/”吗
这完全取决于你想怎么匹配
下面这种可以匹配 /creativity/writing/api 也就是 /creativity/writing + 任何后缀
location ^~ /creativity/writing {
proxy_pass http://192.168.1.124:8080;
}
下面这种也可以匹配 /creativity/writing/api 但是范围较上面要小一些,也就是也就是 /creativity/writing/ + 任何后缀
location ^~ /creativity/writing/ {
proxy_pass http://192.168.1.124:8080;
}
proxy_pass 后面需要带“/”吗
location ^~ /creativity/writing {
proxy_pass http://192.168.1.124:8080;
}
请求地址:http://192.168.1.123/creativity/writing/article
分析:8080后面不带任何 / 直接拼接location及后缀/article
最终 proxy_pass: http://192.168.1.124:8080/creativity/writing/article
location ^~ /creativity/writing {
proxy_pass http://192.168.1.124:8080/writing/an;
}
请求地址:http://192.168.1.123/creativity/writing/article
分析:8080后面带 / 直接拼接localtion的后缀/article
最终 proxy_pass: http://192.168.1.124:8080/writing/an/article
location ^~ /creativity/writing {
proxy_pass http://192.168.1.124:8080/;
}
请求地址:http://192.168.1.123/creativity/writingarticle
分析:8080后面带 / 直接拼接localtion的后缀 article
最终 proxy_pass: http://192.168.1.124:8080/article
location ^~ /creativity/writing {
proxy_pass http://192.168.1.124:8080/;
}
请求地址:http://192.168.1.123/creativity/writing/article
分析:8080后面带 / 直接拼接localtion的后缀 /article
最终 proxy_pass: http://192.168.1.124:8080//article(请仔细看这里有两个//结合结论去分析第一个/是请求地址 article 前面的/,第二个/是8080后面的/)