proxy_pass的使用
请求URI按如下方式传递给服务器:参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
- 如果proxy_pass使用URI指定了指令(即proxy_pass有请求后缀,比如下面的/remote/),那么当请求传递给服务器时, 与该位置匹配的规范化请求URI 的部分将被指令中指定的URI替换:
location /name/ {
proxy_pass http://127.0.0.1/remote/;
}
- 如果proxy_pass没有指定URI,请求URI将以与处理原始请求时客户端发送的格式相同的形式传递给服务器,或者在处理更改的URI时传递完整的规范化请求URI:
location /some/path/ {
proxy_pass http://127.0.0.1;
}
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。
第一种:
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
代理到URL:http://127.0.0.1/test.html,注意/也是给URI指定了指令,所以属于第一种情况会被替换
第二种(相对于第一种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
代理到URL:http://127.0.0.1/proxy/test.html,第二种情况没有指定URI,URI将以相同形式继续传递
第三种:
location /proxy/ {
proxy_pass http://127.0.0.1/aaa/;
}
代理到URL:http://127.0.0.1/aaa/test.html,第一种情况替换
第四种(相对于第三种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1/aaa;
}
代理到URL:http://127.0.0.1/aaatest.html,第一种情况替换