location / {
proxy_pass http://192.168.1.2:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location /web/ {
proxy_pass http://192.168.1.2:8080/;
}
代理到URL:http://192.168.1.2:8080/test.html
location /web/ {
proxy_pass http://192.168.1.2:8080;
}
代理到URL:http://192.168.1.2:8080/web/test.html
location /web/ {
proxy_pass http://192.168.1.2:8080/aaa/;
}
代理到URL:http://192.168.1.2:8080/aaa/test.html
location /web/ {
proxy_pass http://192.168.1.2:8080/aaa;
}
代理到URL:http://192.168.1.2:8080/aaatest.html
location 后的uri可以使用正则,location内部还可以使用if语句做判断
就是我们上边讨论过的
语法: proxy_pass URL;
场景: location, if in location, limit_except
说明: 设置后端代理服务器的协议(protocol)和地址(address),以及location中可以匹配的一个可选的URI。协议可以是"http"或"https"。地址可以是一个域名或ip地址和端口,或者一个 unix-domain socket 路径。
语法: proxy_pass address;
场景: server
说明: 设置后端代理服务器的地址。这个地址(address)可以是一个域名或ip地址和端口,或者一个 unix-domain socket路径。
在两个模块中,两个proxy_pass都是用来做后端代理的指令。
ngx_stream_proxy_module模块的proxy_pass指令只能在server段使用使用, 只需要提供域名或ip地址和端口。可以理解为端口转发,可以是tcp端口,也可以是udp端口。
ngx_http_proxy_module模块的proxy_pass指令需要在location段,location中的if段,limit_except段中使用,处理需要提供域名或ip地址和端口外,还需要提供协议,如"http"或"https",还有一个可选的uri可以配置。
server {
listen 127.0.0.1:11001;
proxy_pass 127.0.0.1:8080;
}
server {
listen 11001;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:11001;
}
server {
listen 53 udp;
proxy_responses 1;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:11001;
proxy_pass unix:/tmp/stream.socket;
}
原文:http://blog.51cto.com/445153/2333281