Nginx服务_阿里云CDN获取客户端真实IP

阿里云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 http://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地址。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.vxia.net/post-1085.html

相关推荐

你肿么看?

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。