shisgmei 发表于 2018-11-12 09:44:30

nginx模块--with-http_realip_module

  分享下 nginx模块--with-http_realip_module
  nginx官网给出的模块解释都是英文
  用翻译软件呢,总有误差
  这边最近有用到这个模块
  给大家分享下
  这个模块主要功能就是   在nginx访问日志中去除代理IP,显示客户的真实IP
  作用呢,一般就是统计客户地域
  还有就是写个统计脚本看有没有流量***
  首页说下正确用法,看了很多文章,说的其实不对
  大家在编译nginx时,加上这个模块
  然后nginx.conf中
  在这里加上"$http_x_forwarded_for"' 段,获取真实IP用的
  log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  HTTP模块,重点哦
  不要在server中用,要在HTTP区用
  这样就是全局使用
  1 省事
  2 如果配了什么防盗链、附件禁止执行啊什么的,日志显示的会有出入
  http {
  set_real_ip_from 0.0.0.0/0;
  real_ip_headerX-Forwarded-For;
  real_ip_recursive   on;
  这样,看的明白吧,HTTP区
  set行是 你认为是代理IP的IP段,可以写成0.0.0.0/0就是全不信的意思
  real_ip_headerX-Forwarded-For; 这个是X-Forwarded-For获取的真实IP
  real_ip_recursive   on;开启认为set行的都是代理IP

  然后nginx -s>  然后呢
  大家可以写个定时任务bash脚本
  给大家提供个命令
  这个命令是看日志中前10访问量最大的IP
  grep -v HEAD /opt/logs/access.log | awk '{print $1}' | sort | uniq -c | sort -n -k 1 -r | head -n 10
  解释:grep -v HEAD去除大量网站健康检测请求,不统计这些
  awk '{print $1}'提取第一列,也就是客户真实IP
  后面那些都是排版的,随便看看吧
  161 203.208.60.21
  125 203.208.60.21
  111 203.208.60.21
  90 203.208.60.21
  85 144.48.243.7
  84 60.189.207.4
  75 203.208.60.21
  74 221.194.47.21
  68 199.185.0.10
  60 202.168.163.14
  效果就是这样,前面是次数,后面是真实IP
  这个是看所有的状态码,很方便,看看网站有没有报错啊什么的
  grep -v HEAD /opt/logs/access.log | awk '{print $9}'| sort | uniq -c | sort -rn
  第9列是状态码,就是200404302 什么的
  2638 200
  691 404
  1 403
  1 304

页: [1]
查看完整版本: nginx模块--with-http_realip_module