nginx反向代理proxy_pass路径问题

2022-10-14 09:10:11 浏览数 (1)

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匹配的地址

0 人点赞