嘟嘟社区

nginx 转发 tcp 后端获取客户端真实 IP


用的 nginx 代理 udpxy ,

udpxy 显示的是 nginx 服务器的 IP 地址,

抓包发现 udpxy 是通过 TCP 链接 IP 来记录的客户端地址,

尝试用 nginx 的 TCP 代理,

在 /etc/nginx/nginx.conf 配置里面添加如下配置,

  1. stream {
  2.         server {
  3.                 listen 9999;
  4.                 proxy_pass 192.168.1.1:50000;
  5.                 proxy_protocol on;
  6.         }
  7. }

复制代码

但是 udpxy 显示的仍然是 nginx 服务器 IP 地址,请问还需要改哪里吗?

QEMU 发表于 2022-8-24 15:48
蹲个大佬解答。
我目前的认知4层tcp代理是不可以的拿到真实ip的

可以的,安装TOA模块,会在TCP options字段写真实IP,两端都装就行。有点像4层协议的x-forwarded-for概念

被转机器也要配置 proxy protocol
proxy_protocol on; 这句话的作用是啥,不能直接修改IP头部字段吧,这样响应消息直接黑洞了吧
两边都要配这个
蹲个大佬解答。
我目前的认知4层tcp代理是不可以的拿到真实ip的
udpxy支持proxy_protocol吗
nginx不支持udp
貌似加入
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

就可以

一般是加头部proxy protocol 里面,后端也要支持解proxy protocol