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

Nginx变量$remote_addr与$real_ip_remote_addr的区别是什么?

$remote_addr 与 $real_ip_remote_addr 的核心区别

1. $remote_addr 的本质

  • 这个变量存的是直接和Nginx建立TCP连接的IP地址。
  • 如果用户直接访问Nginx,它就是用户真实的IP;要是请求经过了反向代理、CDN或者负载均衡,那它就变成这些中间节点的IP,不是用户真实IP了。
  • 属于Nginx默认自带的变量,不需要额外安装模块。

2. $real_ip_remote_addr 的作用

  • 这个变量是ngx_http_realip_module模块提供的(编译Nginx时要启用,或者动态加载该模块),专门用来在代理场景下保存原来的$remote_addr值。
  • 当你配置了set_real_ip_from(指定信任哪些代理服务器的IP)和real_ip_header(比如从X-Forwarded-For请求头里提取用户真实IP)后,Nginx会把$remote_addr替换成用户真实IP,而原来的代理IP就存在$real_ip_remote_addr里。

配置示例

# 配置realip模块,信任指定网段的代理
set_real_ip_from 192.168.1.0/24;
# 从X-Forwarded-For头获取用户真实IP
real_ip_header X-Forwarded-For;

server {
    listen 80;
    server_name example.com;

    location / {
        # $remote_addr 此时是用户真实IP,$real_ip_remote_addr 是代理服务器的IP
        add_header X-User-Real-IP $remote_addr;
        add_header X-Proxy-Server-IP $real_ip_remote_addr;
        root /usr/share/nginx/html;
    }
}

简单讲:如果没用到realip模块,$real_ip_remote_addr根本不存在;用了之后,$remote_addr变成用户真实IP,$real_ip_remote_addr保留原来的代理IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:15:35