You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx TCP流反向代理配置真实客户端IP的正确方法

Nginx Stream代理传递真实客户端IP的正确配置

错误原因分析

你遇到的报错源于两个核心问题:

  1. set_real_ip_from是HTTP模块专属指令,无法在stream块中使用;
  2. 即便在支持的模块中,set_real_ip_from的参数必须是具体IP地址/网段,不能传入变量(如$proxy_protocol_addr)。

正确配置方案

根据后端服务是否支持PROXY协议,分两种场景配置:

场景1:后端服务(127.0.0.1:5555)支持PROXY协议

直接简化配置,跳过中间转发层,让前端Nginx直接向后端发送带PROXY协议的流量:

stream {
    server {
        listen <IP>:3333;
        proxy_pass 127.0.0.1:5555;
        proxy_protocol on;
    }
}

后端服务可通过解析PROXY协议头直接获取真实客户端IP。

场景2:后端服务不支持PROXY协议

需使用Nginx的ngx_stream_realip_module模块(编译时需包含--with-stream_realip_module,可通过nginx -V验证编译参数),配置如下:

stream {
    # 接收外部流量,向中间层发送PROXY协议
    server {
        listen <IP>:3333;
        proxy_pass 127.0.0.1:4444;
        proxy_protocol on;
    }

    # 解析PROXY协议,替换源IP后转发给后端
    server {
        listen 127.0.0.1:4444 proxy_protocol;
        # 指定可信的PROXY协议发送方(此处为本地中间层IP)
        set_real_ip_from 127.0.0.1;
        # 从PROXY协议头提取真实客户端IP
        realip_header proxy_protocol;
        proxy_pass 127.0.0.1:5555;
    }
}

此配置会让中间层Nginx解析PROXY协议头中的真实IP,替换连接的源IP后再转发给后端,后端即可直接获取真实客户端IP。

内容的提问来源于stack exchange,提问作者Petr Javorik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:07:28