本文共 1408 字,大约阅读时间需要 4 分钟。
分享下 nginx模块--with-http_realip_module
nginx官网给出的模块解释都是英文
用翻译软件呢,总有误差这边最近有用到这个模块
给大家分享下这个模块主要功能就是 在nginx访问日志中去除代理IP,显示客户的真实IP
作用呢,一般就是统计客户地域还有就是写个统计脚本看有没有流量***首页说下正确用法,看了很多文章,说的其实不对
大家在编译nginx时,加上这个模块
然后nginx.conf中在这里加上"$http_x_forwarded_for"' 段,获取真实IP用的
log_format main '$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_header X-Forwarded-For;real_ip_recursive on;这样,看的明白吧,HTTP区set行是 你认为是代理IP的IP段,可以写成0.0.0.0/0就是全不信的意思real_ip_header X-Forwarded-For; 这个是X-Forwarded-For获取的真实IPreal_ip_recursive on; 开启认为set行的都是代理IP然后 nginx -s reload 就可以了,无需重启然后呢
大家可以写个定时任务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.21125 203.208.60.21111 203.208.60.2190 203.208.60.2185 144.48.243.784 60.189.207.475 203.208.60.2174 221.194.47.2168 199.185.0.1060 202.168.163.14效果就是这样,前面是次数,后面是真实IP这个是看所有的状态码,很方便,看看网站有没有报错啊什么的
grep -v HEAD /opt/logs/access.log | awk '{print $9}'| sort | uniq -c | sort -rn第9列是状态码,就是200 404 302 什么的2638 200691 4041 4031 304转载于:https://blog.51cto.com/kevinzhang91/2054363