当前位置:论坛首页 > Linux面板 > 讨论

网站接入CDN后,Nginx/Apache/waf日志获取不到真实IP的解决方法

发表在 Linux面板2017-11-25 10:06 [复制链接] 4 4941



这是一篇记录贴,希望可以帮到各位


     前几天,网站受到大规模CC攻击,搞得我很头疼 网站接入了360网站卫士,BT面板开启了 WAF功能,还是受不住大规模的攻击 差点宕机。之后查看Nginx/WAF日志的时候 发现日志记录

的IP全是CDN节点IP。

    好了废话不多说,再BB下去 天都要黑了。

    Nginx  

     用XFF头获取访客真实ip;一般cdn厂商都是用这个转发的。

     首先打开 Nginx.conf 文件用 log_format 在http{}自定义一条新的日志格式。这个不用多说,各位 dalao 都懂,以下配置 仅供小白参考 dalao绕道

  1.          log_format  main  '$remote_addr - $http_x_forwarded_for - $remote_user [$time_local] "$request" '
  2.                                    '$status $body_bytes_sent "$http_referer" '
  3.                                    '"$http_user_agent"';
复制代码


然后 打开网站配置项,在 access_log  /www/wwwlogs/网站名.log; 后面 加上main; 例如:access_log  /www/wwwlogs/www.xxx.com.log main;

   waf

    打开 /www/server/nginx/waf/init.lua 文件 找到 17行 代码如下,这个文件我找的时候 找了好久才找到。。。

  1. function getClientIp()
  2.               IP  = ngx.var.http_x_forwarded_for
  3.               if IP == nil then
  4.                   IP  = ngx.var.remote_addr
  5.               end
  6.               return IP
  7. end
复制代码



     之前 BT定义的 getClientIp() 函数内容 给变量 IP赋的值是 ngx.var.remote_addr 然后判断IP值为空的情况下 返回 “Unknown


     正常情况下来说 是不会无值的,所以:


     在此 强烈建议 BT官方人员 修改 以上内容。省的每次 更新面板 或者更新规则的时候 都要重新修改代码 @河妖 @良哥


使用道具 举报 只看该作者 回复
发表于 2018-6-1 11:45:37 | 显示全部楼层
建议官方加入CDN获取真实IP的配置,现在大部分人都会给自己的网站配置CDN @河妖 @良哥
使用道具 举报 回复 支持 1 反对 0
发表于 2017-11-25 21:51:33 | 显示全部楼层
这个需要自行修改文件才能实现!
微信截图_20171125214937.png

地址是cdn服务商提供的!


----------------------------------------------------------------------------------------------------
菜鸟团队技术博客点击联系
使用道具 举报 回复 支持 反对
发表于 2018-6-1 11:01:08 | 显示全部楼层
楼上两位dalao,这个问题解决了么?
使用道具 举报 回复 支持 反对
发表于 2018-6-1 11:45:20 | 显示全部楼层
建议官方加入CDN获取真实IP的配置,现在大部分人都会给自己的网站配置CDN @河妖@良哥
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表