Nginx实现TCP转发

学思创的头像
学思创
272
需要两个Nginx服务
主服务配置(发送端):
stream {
    # 添加socket转发的代理
    upstream socket443proxy{
      hash $remote_addr consistent;
      # 转发的目的地址和端口
      server 192.168.3.10:443 weight=5 max_fails=3 fail_timeout=30s;
    }
    
    # 提供转发的服务,即访问localhost:443,会跳转至代理socket443指定的转发地址
    server {
      listen 443;
      proxy_connect_timeout 1s;
      proxy_timeout 3s;
      proxy_pass socket443proxy;
      proxy_protocol on;
    }
}

从服务配置(接收端):

listen 443 proxy_protocol ssl http2;
set_real_ip_from 192.168.3.2;
real_ip_header   proxy_protocol;
注:第一个服务用proxy_protocol on; 开启代理协议
第二个服务在监听端口后面跟上 proxy_protocol,并新增两个
set_real_ip_from 192.168.3.2;
real_ip_header   proxy_protocol;

Nginx启用proxy_protocol后,可通过real_ip模块从proxy_protocol头中获取用户真实IP并替换remote_addr

用户评论
评论列表