nginxCDN 如何获取真实访客IP地址 对付cloudflare 及任意CDN通用办法,独家绝密资料

简单一句话 挂CDN 分析日志时候 显示的是CDN ip地址 非访客真实IP 影响分析效果 以下扯淡 可无视、

这个办法最大好处:不会增加任何功能负载,也不依赖任何第三方模块,完全是选用Nginx内置指令来处理的,明月已经用这个办法屡次获取到歹意恳求、
歹意注入、歹意攻击者的实在IP采取了相应的防御战略,总之效果仍是非常不错的,使用本地日志剖析软件的时分统计结果也更加的精准了许多
(可参阅『站长必备的网站日志剖析东西:360 星图』一文)。

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

现在做站太难了 即使是原创 也需要有一些比较详细的说明 所以以后影响阅读的 小黑屋里 这样既能诱惑搜索引擎 又不影响阅读可谓一石二鸟

网上的文章太过繁琐 而且又说的不明白 这里 我给精简了 全是干货

本文在 centos7 系统环境下  用的BT宝塔面板 网站环境 nginx19 其他的略

nginx19 首先是打开配置文件 路径

/www/server/nginx/conf/nginx.conf

这个文件很简单 虽然没透彻的学过配置 但是看看里面 还是能看懂一二

我们在http段 增加一段代码

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

最终的效果

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

这一段必须吐槽  毕竟都不是大神 第一次修改 说的明白点比较好 否则文章不发也罢

这里经过出错 谷歌搜索 才解决 可查看

Nginx配置日志格式报错 log_format” directive is not allowed here ,Nginx的基本配置log_format 写法  一文

好了 这里是需要在站点的配置文件里  而且要去掉$brotli_ratio 否则会报错

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

 

log_format  main 其中的这个 main 可以随便改成其他的  但是要跟下面的

  1. access_log /home/wwwlogs/www.xxxxxxxx.com.log main;里面的main一致

最终的效果看下图 我折腾了好几次才成功的 文章较长 分两节

    内容分页 1 2
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。