一、proxy_pass 在两个模块都存在
| 模块 | 语法 | 场景 | 场景说明 | 官方文档 |
| ngx_http_proxy_module | proxy_pass url; | location, if in location, limit_except | 设置后端代理服务器的协议(protocol)和地址(address),以及location中可以匹配的一个可选的URI。协议可以是"http"或"https"。地址可以是一个域名或ip地址和端口,或者一个 unix-domain socket 路径 | 传送门 |
| ngx_stream_proxy_module | proxy_pass address; | server | 设置后端代理服务器的地址。这个地址(address)可以是一个域名或ip地址和端口,或者一个 unix-domain socket路径。 | 传送门 |
二、proxy_pass 在两个模块中的区别
| 模块 | 相同 | 不同 |
ngx_stream_proxy_module | 都是用来做后端代理的指令 | 只能在server段使用使用, 只需要提供域名或ip地址和端口。可以理解为端口转发,可以是tcp端口,也可以是udp端口。 |
ngx_http_proxy_module | 需要在location段,location中的if段,limit_except段中使用,处理需要提供域名或ip地址和端口外,还需要提供协议,如"http"或"https",还有一个可选的uri可以配置。 |
三、proxy_pass的具体用法
3.1、ngx_stream_proxy_module模块的proxy_pass指令
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
3.2、ngx_http_proxy_module模块的proxy_pass 路径分析
| 访问地址为:http://**.**.**.**/proxy/test.html | |
| 代理配置 | 最终访问地址 |
| location /proxy/ { proxy_pass http://127.0.0.1/; } | http://127.0.0.1/test.html |
| location /proxy/ { proxy_pass http://127.0.0.1; } | http://127.0.0.1/proxy/test.html |
| location /proxy/ { proxy_pass http://127.0.0.1/demo/; } | http://127.0.0.1/demo/test.html |
| location /proxy/ { proxy_pass http://127.0.0.1/demo; } | http://127.0.0.1/demotest.html |
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!










