nginx udp 透传无法获取客户端真实IP 5C

nginx版本是 1.12.2
客户端IP
nginx vip 192.168.1.10
nginx1 ip 192.168.1.11
nginx2 ip 192.168.1.12
service1 ip 192.168.1.13
service2 ip 192.168.1.14
现在是所有的客户端配置的UDP都指向192.168.1.10:162,然后通过nginx vip透传到Nginx1和nginx2,但在
service 上面通过respEvnt.getPeerAddress() 得到的客户端IP为nginx1的,而不是客户端真实IP,请问这个有什么办法吗?
nginx 配置文件
upstream testAgent{

          server   192.168.1.14:162;
          server   192.168.1.13:162;
 }

############for AppServer ##############
server {
listen 162 udp;
proxy_connect_timeout 5s;
proxy_timeout 3s;
proxy_pass testAgent;
proxy_bind $remote_addr transparent;
}

4个回答

增加一行配置
proxy_set_header X-Real-IP $remote_addr;

参看这里

lf127
lf127 这一行如果是加在proxy_bind $remote_addr transparent; 前面,reload时就会报错,nginx: [emerg] "proxy_set_header" directive is not allowed here in ,如果是加在Http{}里面的话,在后台是不是需要request才可以获取?客户端到nginx是udp方式
一年多之前 回复

nginx版本是 1.12.2

以上配置是没有问题的,未收到转发的原因是防火墙限制,使用内网的IP就OK了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!