作为一名常年与服务器斗智斗勇的运维打工人(别问头发还剩多少),今天必须和大家唠唠这个看似简单实则暗藏玄机的问题——当你的网站套了CDN之后,如何在Nginx日志里看到用户的真实IP?这简直是每个站长都会遇到的"薛定谔的IP"谜题!
想象一下这个场景:你刚给电商网站上了某云CDN服务(内心OS:这下加载速度不得起飞咯~),结果查看访问日志时突然发现——所有来访客户都变成了"熟悉的陌生人",清一色显示着CDN节点的IP地址!

这时候你才惊觉:原来用了CDN后就像给服务器戴了墨镜!所有请求都经过CDN节点转发(相当于中间商赚差价),而你的服务器看到的自然只是中间商的马甲IP。
这里必须祭出网络界的经典头字段——X-Forwarded-For(简称XFF)。这个字段就像快递单上的运输记录:
```
X-Forwarded-For: 客户端真实IP, CDN节点1 IP, CDN节点2 IP...
举个栗子🌰:
当用户(1.1.1.1)访问套了三层CDN的网站时:
1. 第一跳CDN记录:XFF: 1.1.1.1
2. 第二跳追加记录:XFF: 1.1.1.1, 2.2.2.2
3. 第三跳继续追加:XFF: 1.1.1.1, 2.2.2.2, 3.3.3.3
但默认情况下我们的nginx.conf配置是这样的青铜段位:
```nginx
log_format main '$remote_addr - $remote_user [$time_local] "$request"';
于是你看到的$remote_addr永远都是最后一层代理的IP(说好的客户真实信息呢摔!)
是时候展现真正的技术了!请跟着我修改nginx配置:
log_format realip_log '$http_x_forwarded_for - $remote_addr - $time_local';
这样就能在日志里同时看到XFF头和传统remote_addr啦~
在编译nginx时加上--with-http_realip_module参数(云服务商提供的镜像一般已包含)
然后在server段添加:
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
这三个指令堪称黄金搭档:
- `set_real_ip_from`:指定可信代理IP(就像给快递员发工作证)
- `real_ip_header`:指定从哪个头取真实IP
- `real_ip_recursive`:开启递归查找模式
举个实战案例🌰:
假设收到请求头:
X-Forwarded-For: 192.168.1.100, 10.0.0.5, 203.0.113.45
而203开头的IP是已知的CDN节点:
set_real_ip_from 203.0.113.45;
这时$remote_addr就会自动变成192开头的真实用户IP!
你以为这就完了?Too young!这些坑我当年都栽过:
某次我把set_real_ip_from设成了自家内网地址...结果所有外部请求都被当成代理请求处理(领导看监控时的表情管理已失控)
✅正确姿势:
通过dig命令查询CDN服务商提供的节点域名:
```bash
dig @8.8.8.8 cdn.yourprovider.com +short
当你的架构是 [用户] → [云WAF] → [CDN] → [服务器],这时候XFF头会变成:"用户IP, WAF IP, CDN IP"
解决方案:
real_ip_recursive on;
曾有黑客伪造XFF头进行DDoS攻击:"X-Forwarded-For: 8个G的随机IP"
防御方案:
map $http_x_forwarded_for $real_client_ip {
~^([^,]+) $1;
}
limit_req_zone $real_client_ip zone=req_limit:10m rate=10r/s;
部署完成后怎么确认配置生效?试试这几个组合技:
① curl测试法:
curl -H "X-Forwarded-For: test.client.ip" http://yourdomain.com/
② nginx变量检查:
location /showip {
return 200 "$remote_addr\n";
③ tcpdump抓包大法:
tcpdump -i eth0 port 80 -nnvvXSs 0 | grep "X-Forwarded"
| 场景类型 | nginx配置要点 | XFF头示例 |
|------------|----------------------------------|---------------------------|
|直连无代理 |无需特殊配置 |空值 |
|单层CDN |设置第一个可信代理 |用户真实IP, CD节点 |
|多层防护 |设置多个可信源+递归模式 |用户真实IP,WAF IP, CD节点 |
最后送大家一句运维箴言:"配反向代理一时爽,没配真实IP火葬场"。下次遇到登录异常、CC攻击找不到源头时...记得回来看看这篇避坑指南哦~
TAG:nginx cdn 真实ip,nginx real ip,nginx和cdn,nginx incloud
随着互联网的普及和信息技术的飞速发展台湾vps云服务器邮件,电子邮件已经成为企业和个人日常沟通的重要工具。然而,传统的邮件服务在安全性、稳定性和可扩展性方面存在一定的局限性。为台湾vps云服务器邮件了满足用户对高效、安全、稳定的邮件服务的需求,台湾VPS云服务器邮件服务应运而生。本文将对台湾VPS云服务器邮件服务进行详细介绍,分析其优势和应用案例,并为用户提供如何选择合适的台湾VPS云服务器邮件服务的参考建议。
工作时间:8:00-18:00
电子邮件
1968656499@qq.com
扫码二维码
获取最新动态