对于 Nginx 使用 proxy_pass 做代理服务器时,最终到达真实服务器的路径还挺有意思的,傻傻斜杆分不清,哈哈。
Location 末尾没有 /
这种情况是最简单的,相当于是完全替换,不存在拼接逻辑,比如如下配置
location /api {
proxy_pass: localhost:8899/abc
}
这种情况访问 /api/user 等同于访问 localhost:8899/abc/user
Location 末尾有 /
这种情况就比较复杂了,我也没看出什么规律,网上资料是这么说的
proxy_pass 后面的路径只有域名同时最后有 /
location /api/ {
proxy_pass: localhost:8899
}
这种情况访问 /api/user 等同于访问 localhost:8899/api/user
proxy_pass 后面的路径只有域名同时最后有 /
location /api/ {
proxy_pass: localhost:8899/
}
这种情况访问 /api/user 等同于访问 localhost:8899/user
proxy_pass 后面的路径还有其他路径但是最后没有 /
location /api/ {
proxy_pass: localhost:8899/abc
}
这种情况访问 /api/user 等同于访问 localhost:8899/abcuser
proxy_pass 后面的路径还有其他路径同时最后有 /
location /api/ {
proxy_pass: localhost:8899/abc/
}
这种情况访问 /api/user 等同于访问 localhost:8899/abc/user