流量路径
客户端 nginx1 nginx2 nginx3 后端服务 前端页面
nginx1配置
shell
server {
listen 80;
server_name your_nginx_server.com;
location / {
proxy_pass http://nginx2_server_address;
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_set_header X-Forwarded-Proto $scheme;
}
}
# proxy_pass指令指定了请求应该被转发到的nginx2的地址。
# proxy_set_header指令用于设置转发到nginx2的HTTP头部。这里我们设置了X-Real-IP和X-Forwarded-For,以便nginx2可以获取到原始客户端的IP地址。
# proxy_set_header Host $host;
# 将原始请求的 Host 头字段传递给代理服务器。
# proxy_set_header X-Real-IP $remote_addr;
# 向代理服务器传递客户端的真实 IP 地址。
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 确保代理服务器知道请求经过的所有代理的 IP 地址列表
# proxy_set_header X-Forwarded-Proto $scheme;
# 向代理服务器传递原始请求的协议类型(http 或 https)。
nginx2配置
shell
http {
...
real_ip_header X-Forwarded-For;
set_real_ip_from nginx1的IP地址;
...
server {
...
location / {
proxy_pass http://nginx3_server_address;
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_set_header X-Forwarded-Proto $scheme;
# 你的其他配置指令
}
}
...
}
nginx3配置
shell
http {
...
real_ip_header X-Forwarded-For;
set_real_ip_from nginx2的IP地址;
...
server {
...
location / {
# 具体分拆前端后端的location
# 你的其他配置指令
add_header X-Real-IP $remote_addr; # 可选,用于调试目的
}
}
...
}