概念

反向代理(Reverse Proxy)以代理服务器的身份接受客户端发送过来的请求,然后将请求转发给相应的应用服务器,并将从应用服务器上得到的结果返回给客户端。
Nginx 通过 proxy_pass 指令来实现反向代理,此时代理服务器对外就表现为一个服务器,它只转发请求,不负责处理。
Nginx 默认只支持七层代理转发(基于 HTTP),负载均衡需要从四层进行代理转发(基于 TCP/UDP)

实例

如下两个代理,分别将 yuwei.cc 转发给 127.0.0.1:9000、yuwei.cc/api 转发给 127.0.0.1:9501:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
server_name yuwei.cc;

location / {
proxy_pass http://127.0.0.1:9000;
##为请求头添加 Host 字段,用于指定请求服务器的域名/IP 地址和端口号
proxy_set_header Host $host:$server_port;
}
location /api {
proxy_pass http://127.0.0.1:9501;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}

服务器内核需要开启转发功能


1
echo 1 > /proc/sys/net/ipv4/ip_forward