Nginx、WAF 接入 CDN 后获取访客真实 ip 方法

  • A+
所属分类:SEO优化

  Nginx

方法一:打开 Nginx.conf 文件,用 log_format 在 http{}自定义一条新的日志格式:

  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"';

此时日志格式为:CDN IP-----真实 IP。

 

方法二:

  1. #获取用户真实 IP,并赋值给变量$clientRealIP
  2. map $http_x_forwarded_for  $clientRealIp {
  3.         ""      $remote_addr;
  4.         ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
  5.         }
  6. log_format  main  '$clientRealIP - $remote_user [$time_local"$request" '
  7.                                    '$status $body_bytes_sent "$http_referer" '
  8.                                    '"$http_user_agent"';

此时日志格式为:真实 IP-----。

 

最后再网站配置项,在 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

 

推荐使用网站日志分享工具:360 星图分析

其它具体参考百度

 

历史上的今天:

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: