惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
M
MIT News - Artificial intelligence
D
Docker
量子位
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
月光博客
月光博客
有赞技术团队
有赞技术团队
J
Java Code Geeks
A
About on SuperTechFans
P
Proofpoint News Feed
Jina AI
Jina AI
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
V
V2EX
GbyAI
GbyAI
F
Fortinet All Blogs

LCZBlog

猎奇向:如何自动化地签发与轮替 Google Trust Services 的 7 日证书 | LCZBlog 又至一月月明时 | LCZBlog 又至一月月明时 在一切尘埃落定之时:记我的 K12 生活 | LCZBlog 在一切尘埃落定之时:记我的 K12 生活 游记与流水账 | 山东省济南市 与 上海市 | 250703-07 | LCZBlog 游记与流水账 | 山东省济南市 与 上海市 | 250703-07 中国科学技术大学第十一届信息安全大赛 Write Up | LCZBlog 中国科学技术大学第十一届信息安全大赛 Write Up 2024“京华杯”信息安全综合能力竞赛 Write Up | LCZBlog 2024“京华杯”信息安全综合能力竞赛 Write Up Windows 11, 版本 24H2 现已面向公众可用! | LCZBlog Windows 11, 版本 24H2 现已面向公众可用! 通过配置 NGINX 实现仅获取可信来源的真实 IP 请求头 Apple Vision Pro 初体验 | LCZBlog Apple Vision Pro 初体验 聊聊近些日子我们部署的针对特定地区特定运营商的阻断策略 | LCZBlog 聊聊近些日子我们部署的针对特定地区特定运营商的阻断策略 介绍 Windows 11 检查点累积更新 | LCZBlog 介绍 Windows 11 检查点累积更新
通过配置 NGINX 实现仅获取可信来源的真实 IP 请求头 | LCZBlog
2024-08-28 · via LCZBlog

通常情况下,NGINX 直接认为向它发起请求的 IP 为 CLIENT_IP。如果所有的访客都是直接请求这个 NGINX 服务,那将是多么完美的事情,NGINX 将准确地获取每个请求的客户端 IP 地址。

然而,在实际的生产环境中,为了更好地体验,我们总会将源站置于加速网络之后。在这种情况下,请求源站的就不再是真实的客户端了,而是加速网络的边缘节点(或者专门用于回源的中间源节点)。

根据我们小学 2.5 年级学过的知识,我们知道,通常情况下,加速网络在回源时会携带 X-Forwarded-For 标头。「这还不简单吗?我直接将客户端 IP 用 XFF 标头内容替代就好了。」你心想。殊不知,你的大意带来了严重的安全风险。在 N+2.5 天后,当你审计日志时,你将对着列表中的一大串 IP 地址为 127.0.0.1 的恶意请求感到无从下手。

为什么我们需要仅从可信来源获取真实 IP?

我们知道,请求头中的内容并非完全不可伪造的。事实上,我们完全可以伪造一个值为 127.0.0.1 的 XFF 头,并直接请求源服务器。如果源服务器只是简单地处理 XFF 与真实 IP 的映射,它当然会合理地认为这个请求的真实 IP 是 127.0.0.1。

当然,这类问题可以通过网络层的配置解决——只放行可信 IP 入站即可。今天我们仅探讨从 NGINX 软件层面进行处理。

如何做?

通过 set_real_ip_from 指定可信来源。

比如,如果你正在使用腾讯云 CDN,那么你需要在 NGINX 配置文件中这样书写:

# 处理 X-Forwarded-For
real_ip_header X-Forwarded-For;

# 指定多个可信的代理服务器 IP 地址范围
# 腾讯云
set_real_ip_from 101.71.hidden.0/24;
...
set_real_ip_from 43.140.hidden.0/24;

image 13

在腾讯云 CDN 控制面板 回源节点查询 功能中可以查询到特定加速域名的回源 IP 段,点击右侧下载即可导出为文件,按上方形式书写即可。记得行末的分号。

好啦,又水了一篇文章。