传输层如何把客户端的真实IP转给上游服务
来源:6-3 使用Nginx作为反向代理时支持的协议

雨中独行
2024-04-02
老师,我的实验场景是:nginx和上游服务安装在同一台机器。
上游服务器开启socket监听端口,监听客户端发来的数据,需要获取客户端的真实IP和端口
使用了如下的配置:
stream{
upstream netty_test{
server 127.0.0.1:9001 weight=1;
server 127.0.0.1:9002 weight=2;
}
server{
listen 9999;
proxy_pass netty_test;
}
}
由于工作在第四层,无法修改HTTP协议头,把客户端ip透传给上游服务。
问题是:完成转发后,上游服务获取到远程的IP都是安装nginx机器的IP了。
请问,如何在第四层上把客户端的真实IP转给上游服务?
写回答
1回答
-
酷田
2024-04-09
默认情况下,上游获取的是代理的IP地址。如果想要上游应用可以获取到客户端的真实IP地址,需要在Nginx增加配置,增加头部信息,透传客户端真实IP给上游应用。
增加HTTP头部信息示例如下:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
112024-04-09
相似问题