Nginx接入cdn以后日志抓取的不是真实IP
首先查看nginx是否有http_realip_module模块
# nginx -V | grep http_realip_module命令,查看是否已安装http_realip_module模块。
如果已在Nginx服务器上安装该模块,请跳过该步骤。如果没有在Nginx服务器上安装该模块,请重新编译Nginx服务并参考如下方法安装该模块。
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar zxvf nginx-1.12.2.tar.gzcd nginx-1.12.2./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`
1.修改Nginx服务器配置文件。
在location / {}中添加以下内容:
proxy_redirect off;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
proxy_set_header X-Forwarded-For $remote_addr;
- 修改log_format日志记录格式:
打开nginx.conf配置文件,定位到http配置部分的log_format,在log_format中添加x-forwarded-for字段,替换默认的remote-address字段。
修改后的log_format内容如下:
log_format main ‘$http_x_forwarded_for - $remote_user [$time_local] “$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘ ‘“$http_user_agent” ‘;
可能会报warn:nginx -t
nginx: [warn] could not build optimal proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_size: 64; ignoring proxy_headers_hash_bucket_size
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
在构建server_names_hash时候出现问题,建议你增加server_names_hash_max_size或者proxy_headers_hash_bucket_size的大小来解决。
Vim /etc/nginx/nginx.conf
proxy_headers_hash_bucket_size 1024;
types_hash_bucket_size 1024;
看服务器配置,如果服务器资源有限可适当调整 以平衡资源性能.