官方文档 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
url用于设置代理服务器的协议和地址,以及可选的uri。 一般表现形式为:protocol://ip:port[uri] 或者 protocol://domain[uri]
由于URL末尾是否存在uri的处理逻辑不同,下面着重分析:
“/” 也算是uri
处理逻辑:代理请求时,会先将请求的uri中和location匹配的部分替换成 proxy_pass 指定的uri,再将最终的uri拼接到代理地址,才是最终访问的url
举个栗子: 有如下配置:
location /proxy { proxy_pass http://127.0.0.1:8099/svr1; # uri为'/svr1' }有如下请求:http://localhost:8088/proxy/index.html 详细解析:
请求的uri:/proxy/index.htmllocation匹配的部分:/proxyproxy_pass 指定的uri:/svr1最终的uri:/svr1/index.html (将请求的uri中和location匹配的部分替换成 proxy_pass 指定的uri)代理地址:http://127.0.0.1:8099最终访问的url:http://127.0.0.1:8099/svr1/index.html即访问 http://localhost:8088/proxy/index.html,实际请求路径为 http://127.0.0.1:8099/svr1/index.html
处理逻辑:代理请求时,直接将请求的uri拼接到代理地址,就是最终访问的url
举个栗子: 有如下配置:
location /proxy2 { proxy_pass http://127.0.0.1:8099; # 无uri }有如下请求:http://localhost:8088/proxy2/index.html 详细解析:
请求的uri:/proxy2/index.html代理地址:http://127.0.0.1:8099最终访问的url:http://127.0.0.1:8099/proxy2/index.html即访问 http://localhost:8088/proxy2/index.html,实际请求路径为 http://127.0.0.1:8099/proxy2/index.html
即访问 http://localhost:8088/v1/index.html,实际请求路径为 http://127.0.0.1:8099/index.html
end