问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

图解nginx 如何获取真实的来源 IP

发布网友 发布时间:2022-11-24 19:25

我来回答

1个回答

热心网友 时间:2024-05-20 06:20

$remote_addr :这是 nginx 中的一个变量,是理论上请求来源的 IP 地址
$direct_ip :这是为例方便理解本文虚构的一个变量名,表示向 nginx 直接发起请求的客户端的真正 IP 地址

$direct_ip 是无法伪造的,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后面的 HTTP 请求。
一般来说 $remote_addr 就等于$direct_ip ,我们通常也就是这样直接地判断请求来源。
但是,在多层反向代理的架构中,这个 $direct_ip 往往是一台内部服务器的 IP,不能真实的反应请求的来源,如下图:

为此,在 nginx 中的 $remote_addr 取值专门设计了特定的逻辑
有三个重要变量可在 nginx 中配置:

set_real_ip_from :默认为空,可设置为任意 IP 或 IP 段,实例中的 0.0.0.0/0 表示覆盖了所有网段
real_ip_header :默认值是 X-Real-IP,可以设置为任意字符串,一般建议改用 X-Forwarded-For,下面也均以 X-Forwarded-For 为例
real_ip_recursive :默认为 off,可设 on / off 两种值

网上介绍 $remote_addr 取值逻辑的文章有很多,此文不做赘述。
我们今天就单用一张图来解释下这个流程(点击图片查看大图):

服务端 nginx 配置:

上一级代理发来请求:

理论上真实来源 IP:
$remote_addr = 2.2.2.2

在多层反向代理的架构中,每一个 nginx 节点最好都添加上如下配置条目:

https://blog.csdn.net/qq_33101675/article/details/79013248 (红字部分解释得好)
https://www.jianshu.com/p/15f3498a7fad

热心网友 时间:2024-05-20 06:20

$remote_addr :这是 nginx 中的一个变量,是理论上请求来源的 IP 地址
$direct_ip :这是为例方便理解本文虚构的一个变量名,表示向 nginx 直接发起请求的客户端的真正 IP 地址

$direct_ip 是无法伪造的,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后面的 HTTP 请求。
一般来说 $remote_addr 就等于$direct_ip ,我们通常也就是这样直接地判断请求来源。
但是,在多层反向代理的架构中,这个 $direct_ip 往往是一台内部服务器的 IP,不能真实的反应请求的来源,如下图:

为此,在 nginx 中的 $remote_addr 取值专门设计了特定的逻辑
有三个重要变量可在 nginx 中配置:

set_real_ip_from :默认为空,可设置为任意 IP 或 IP 段,实例中的 0.0.0.0/0 表示覆盖了所有网段
real_ip_header :默认值是 X-Real-IP,可以设置为任意字符串,一般建议改用 X-Forwarded-For,下面也均以 X-Forwarded-For 为例
real_ip_recursive :默认为 off,可设 on / off 两种值

网上介绍 $remote_addr 取值逻辑的文章有很多,此文不做赘述。
我们今天就单用一张图来解释下这个流程(点击图片查看大图):

服务端 nginx 配置:

上一级代理发来请求:

理论上真实来源 IP:
$remote_addr = 2.2.2.2

在多层反向代理的架构中,每一个 nginx 节点最好都添加上如下配置条目:

https://blog.csdn.net/qq_33101675/article/details/79013248 (红字部分解释得好)
https://www.jianshu.com/p/15f3498a7fad

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
微信提现金额的限制和手续费是多少? 微信有多少的提现额度 微信的提现额度是多少钱 较大锦鲤鱼多少钱一条 10厘米锦鲤大概多少钱 大的锦鲤鱼多少钱一条 10厘米锦鲤多少钱一条 野生锦鲤多少钱一条 普通小锦鲤多少钱一条 大锦鲤鱼多少钱一条 河南现代交通道路科技有限责任公司电话是多少? 误差如何计算及计算公式 误差的计算方法是什么 如何将自己手机的固件备份成zip 洛达固件怎么备份文件 加速器排行榜 个人怎样申请正牌pos机? 庆元旦少先队中队活动方案 佛系英语单词该怎么说 佛系 用英语怎么说 班级作业小程序怎么删除账号和密码 微信忘记密码如何注销账号(密码忘了怎么注销) 诊断冠心病,须与哪些疾病相鉴别? 银行支票填写的日期还没有到期能提钱吗 2014年的韩国电影:奇怪的她,在哪里有中字可以看? 韩国电影《奇怪的她》里潘智河是谁演的? 有部韩剧女主角叫斗丽的 ...的人只有我妈一个的那首歌叫什么?还有一个的歌词是都怪雨 还有一个的伤心是什么歌里的歌词 关于许嵩的新歌 毁人不倦 的深层含义 (不chun) 国寿福提前给付重大疾病保险什么意思 uoa获取ip原理 吃了肉包子,把油滴在衣服上了,身上带了肉包子味,用蓝月亮好洗吗?_百 ... 衣服被包子流的汤汁染了一片怎么洗 怎样去太空棉衣服上的包子味 生育保险和生育津贴的区别是什么 热电偶热电阻自动检定系统的技术指标 热电阻、热电偶检查时都检查什么? 写出对应原子的元素符号:氢___;碳___;氦___;铝___;汞___. 镁原子,汞原子,氦原子,氧原子,氧分子,氮原子,氮分子的化学符号 请在横线上用恰当的化学用语表示:(1)一个汞原子 &nb... 外地人,可以在海宁本省办理护照吗? 渝碚路街道有哪些社区 渝碚路社区电话 渝碚路街道电话 重庆市市辖区沙坪坝区渝碚路街道下辖村委会有哪些? 沙坪坝渝碚路街道社区工作人员工资怎么样 重庆金沙天街属于哪个街道 重庆沙坪坝区沙南街43号属于哪个街道哪个社区 关于赏花的唯美说说心情 鱼塘杀虫剂用大量了鱼大量死亡怎么办?