阿里云CND,配合nginx 使用时,查看访问日志文件时,IP地址都是阿里云CDN的IP,所以在遇到攻击或统计数据时,会出现一些失误。
Nginx查看访问日志文件:
tail -n 30 /alidata/server/nginx/logs/access.log
此方法由阿里云官方提供,微夏博客整理重新发布。
原链接:https://help.aliyun.com/knowledge_detail/40535.html
Nginx配置方案
1. 确认http_realip_module模块已安装
Nginx作为负载均衡获取真实ip是使用http_realip_module,默认一键安装包安装的Nginx是没有安装这个模块的,但一般服务器都会安装。
查看有无安装:
nginx -V | grep http_realip_module
(微夏博客提示:一般都没有安装此功能)
如没有,则需要重新重新编译Nginx并加装:
wget https://www.vxia.net/source/other/nginx-1.4.4.tar.gz tar zxvf nginx-1.4.4.tar.gz cd nginx-1.4.4 ./configure --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module make make install kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid` kill -QUIT `cat /alidata/server/nginx/logs/ nginx.pid.oldbin`
2. 修改nginx对应server的配置(一般为nginx.conf)
在 http {} 中添加:
#Aliyun WAF vxia.net set_real_ip_from ip_range1; set_real_ip_from ip_range2; ... set_real_ip_from ip_rangex; real_ip_header X-Forwarded-For; real_ip_recursive on;
这里的ip_range1,2,…指的是高防的回源IP地址(如果高防后面还有WAF/CDN,则需要写WAF/CDN的回源IP地址,即需要写离源站最近的一层七层代理的回源IP段),需要添加多条。
一般ip_range1,修改为IP段即可,如 115.124.31.0/24;
即:set_real_ip_from 115.124.31.0/24;
3. 修改日志记录格式 log_format
log_format一般在nginx.conf中的http配置中:
log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" '; #日志文件路径和日志文件名 access_log /alidata/server/nginx/logs/access_new.log main;
4.重启Nginx使配置生效
service nginx reload
按此方法操作,即可正确获取访问阿里云CDN的真实IP地址。