nginx proxy_pass 匹配情况
在nginx中配置proxy_pass代理转发时,
如果在proxy_pass后面的url中含有/,表示绝对根路径,匹配的location 路径就不在url里了;
如果没有/,表示相对路径,把匹配的路径部分也给代理走,要在url里留着。
proxy_pass有/,实际访问地址就没有location
访问地址:http://localhost/proxy/abc.html
以下是几种常见的匹配情况:
第一种:
location /proxy/ {
proxy_pass http://127.0.0.1:8080/;
}
代理到:http://127.0.0.1:8080/abc.html
第二种:
location /proxy/ {
proxy_pass http://127.0.0.1:8080;
}
相对于第一种proxy_pass缺少/
代理到:http://127.0.0.1:8080/proxy/abc.html
第三种:
location /proxy/ {
proxy_pass http://127.0.0.1:8080/api/;
}
代理到:http://127.0.0.1:8080/api/abc.html
第四种:
location /proxy/ {
proxy_pass http://127.0.0.1:8080/api;
}
相对第三种少/
代理到:http://127.0.0.1:8080/apiabc.html
location /proxy {
proxy_pass http://127.0.0.1:8080/api;
}
代理到:http://127.0.0.1:8080/api/abc.html
第五种:
location /proxy {
proxy_pass http://127.0.0.1:8080/;
}
代理到:http://127.0.0.1:8080//abc.html
注意此处有两个反斜杠//
location /proxy {
proxy_pass http://127.0.0.1:8080;
}
代理到:http://127.0.0.1:8080/proxy/abc.html