Nginx 不受 CDN 服务影响获取访客真实 IP

栏目: 服务器 · Nginx · 发布时间: 5年前

内容简介:获取和记录站点访客的真实 IP 对于站点日志的分析和安全策略的指定很有帮助,Nginx 默认的日志记录获取到的 IP 地址如果站点启用了 CDN 服务,那么这里的 IP 地址都是 CDN 服务器节点的 IP 地址了,并不是用户访客的 IP 地址(如图 1),这时候分析 Nginx 日志看到的数据就不是很真实了,影响判断呀!今天明月就给大家分享一个 Nginx 不受 CDN 服务影响获取访客真实 IP 的方法。

获取和记录站点访客的真实 IP 对于站点日志的分析和安全策略的指定很有帮助,Nginx 默认的日志记录获取到的 IP 地址如果站点启用了 CDN 服务,那么这里的 IP 地址都是 CDN 服务器节点的 IP 地址了,并不是用户访客的 IP 地址(如图 1),这时候分析 Nginx 日志看到的数据就不是很真实了,影响判断呀!今天明月就给大家分享一个 Nginx 不受 CDN 服务影响获取访客真实 IP 的方法。

Nginx 不受 CDN 服务影响获取访客真实 IP

Nginx 不受 CDN 服务影响获取访客真实 IP

图 1

从图 1 里可以看到 Nginx 日志里记录的183.131.214.25、59.56.78.45 等等这些 IP 地址基本上都是 CDN 服务的节点 IP,这样的统计结果很明显混乱不堪毫无分析价值了都。好在明月以前折腾“Nginx 限制单个 IP 的并发连接数/速度”的时候知道通过 map 指令绕过 CDN 获取访客真实 IP(可参考哦『Nginx 限制单个 IP 的并发连接数改进适配开启 CDN 站点』一文),由此让 Nginx 日志记录访客真实 IP 不受 CDN 服务影响的方法也就出来了,只需要在你的 Nginx 的配置文件 nginx.conf 里添加如下配置代码获取访客真实 IP 并赋值到一个变量:

#获取用户真实 IP,并赋值给变量$clientRealIP 
 
map $http_x_forwarded_for  $clientRealIp { 
""      $remote_addr; 
~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr; 
} 

然后在指定 Nginx 日志格式的 log_format 里替换$remote_addr 为上面的$clientRealIP 的变量即可,修改后如下:

#日志中记录真实 IP 地址,替换$remote_addr 为上面的$clientRealIP. 
 
log_format  main  '$clientRealIP - $remote_user [$time_local] "$request" ' 
                             '$status $body_bytes_sent $brotli_ratio "$http_referer" ' 
                            '"$http_user_agent"'; 

最后为了让这个 Nginx 日志格式配置生效,在站点日志配置文件里采用这个日志格式生成日志即可,配置代码如下:

access_log /home/wwwlogs/www.xxxxxxxx.com.log main; 

注意 access_log 这段最后的 main 哦,这里要跟上面的日志格式对应的才能生效哦,记得要修改 XXXXX 为你的站点域名或者站点日志文件名称哦。

重启一下 Nginx 生效配置,这时候查看 Nginx 日志文件是不是访客 IP 都是真实 IP 了,不再是 CDN 节点 IP 了。要验证日志实时输出才可以看到确切效果,如下截图:

Nginx 不受 CDN 服务影响获取访客真实 IP

可以看到,日志记录的访客 IP 已经都是访客 IP 了,不再是千篇一律的 CDN 节点 IP 了,大功告成!以后分析日志原始数据就准确了,再也不会发生屏蔽某个 IP 后造成误伤 CDN 节点的事儿了,同时对于那些恶意扫描、注入的请求的 IP 也可以有的放矢来应对了。

这个方法最大的优点就是几乎不会增加任何性能负载,也不依赖任何第三方模块,完全是采用 Nginx 内置命令来解决的,明月已经用这个方法多次获取到恶意请求、恶意注入、恶意攻击者的真实 IP 采取了相应的防御策略,总之效果还是非常不错的,使用本地日志分析软件的时候统计结果。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员面试笔试宝典

程序员面试笔试宝典

何昊、叶向阳、窦浩 / 2012-10 / 59.80元

《程序员面试笔试宝典》除了对传统的计算机相关知识(C/C++、数据结构与算法、操作系统、计算机网络与通信、软件工程、数据库、智力题、英语面试等)进行介绍外,还根据当前计算机技术的发展潮流,对面试笔试中常见的海量数据处理进行了详细的分析。同时,为了更具说服力,《程序员面试笔试宝典》特邀多位IT名企面试官现身说法,对面试过程中求职者存在的问题进行了深度剖析,同时《程序员面试笔试宝典》引入了一批来自于名......一起来看看 《程序员面试笔试宝典》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具