1.nginx的proxy_pass配置路径,加与不加“/”差异巨大
1.1 等价写法
代码语言:javascript复制location /proxy {
proxy_pass http://192.168.137.181:8080;
}
当访问 http://127.0.0.1/proxy/test/test.txt时,nginx匹配到/proxy路径,把请求转发给192.168.137.181:8080服务,实际请求路径为http://10.0.0.1:8080/test/test.txt,nginx会去掉匹配的“/proxy”。
代码语言:javascript复制#等价于
location /proxy {
proxy_pass http://192.168.137.181:8080/proxy/;
}
#或者等价于1.3
1.2 相对路径
代码语言:javascript复制location /proxy {
proxy_pass http://10.0.0.1:8080;
}
当访问 http://127.0.0.1/proxy/test/test.txt时,nginx匹配到/proxy路径,把请求转发给192.168.137.181:8080服务,实际请求代理服务器的路径为http://192.168.137.181:8080/proxy/test/test.txt, 此时nginx会把匹配的“/proxy”也代理给代理服务器。
1.3代理路径添加uri(1.1的变种写法)
代码语言:javascript复制location /proxy {
proxy_pass http://10.0.0.1:8080/static01/;
}
当访问 http://127.0.0.1/proxy/test/test.txt时,nginx匹配到/proxy路径,把请求转发给192.168.137.181:8080服务,实际请求代理服务器的路径为http://10.0.0.1:8080/static01/test/test.txt。
总结:proxy_pass末尾加 /,代理的时候不会把location匹配的地址带上,如果末尾不加 / 则会加上location匹配的地址