用的 nginx 代理 udpxy ,
udpxy 显示的是 nginx 服务器的 IP 地址,
抓包发现 udpxy 是通过 TCP 链接 IP 来记录的客户端地址,
尝试用 nginx 的 TCP 代理,
在 /etc/nginx/nginx.conf 配置里面添加如下配置,
stream { server { listen 9999; proxy_pass 192.168.1.1:50000; proxy_protocol on; } }
但是 udpxy 显示的仍然是 nginx 服务器 IP 地址,请问还需要改哪里吗?
![]() | 1 Renewmm 2022-08-24 15:38:32 +08:00 在 nginx 设置一个请求头将真实 ip 发给程序 |
![]() | 2 allenforrest 2022-08-24 15:39:29 +08:00 udpxy 不支持 proxy protocol 的话,你这个配置没法透传 IP 给 udpxy 诶。 可以试试看 IP transparent 方案: proxy_bind $remote_addr transparent |
![]() | 3 allenforrest 2022-08-24 15:39:57 +08:00 |
4 cs8425 2022-08-24 15:44:49 +08:00 可以参考下 haproxy proxy protocol 跟 mmproxy (go-mmproxy) |
![]() | 5 c332030 2022-08-24 15:50:15 +08:00 楼主是四层代理吧,传报文头是七层代理 |
![]() | 6 CEBBCAT 2022-08-24 15:52:33 +08:00 看一下这篇文章 https://razeen.me/posts/nginx-tcp-stream-proxy-keep-real-client-ip/ ,关键词 Proxy Protocol |
![]() | 7 zliea 2022-08-24 15:53:27 +08:00 ![]() proxy_set_header X-Real-IP $remote_addr; |
![]() | 8 zliea 2022-08-24 15:54:26 +08:00 看错了,是 tcp 的真实 ip ,上边的是 http 的 |
![]() | 9 tramm 2022-08-24 16:31:32 +08:00 在线蹲一个解决方案, 虽然现在单机还扛得住... #3 这个里面只看 Nginx -> Nginx 的. 如果直接转发到我的服务端是不是还得我的服务端支持 PROXY Protocol 啊? |
![]() | 11 toyst OP ``` sub_filter '<td>192.168.1.11' '<td>$remote_addr'; ``` 在 location 里面用这个热替换了, 有个坑,自带的 sub_filter 不支持正则,第三方的 subs_filter (多个 s) 支持正则。 |
13 ShuA1> 2022-08-25 09:20:41 +08:00 tcp 是 4 层代理,修改报文头是需要 7 层代理的 |