文章内容
2019/12/19 17:30:38,作 者: 黄兵
Nginx使用CDN后日志如何记录真实用户IP
最近在使用cdn的时候,日志记录的全部是cdn ip,给分析access.log带来了很多麻烦,于是参考这篇文章:Nginx环境使用CDN加速后网站日志获取真实用户IP地址方法
自己配置了一下日志记录,如下:
http { log_format main '$http_x_forwarded_for - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log;
其中:$http_x_forwarded_for
这个变量的意思,其实就像是链路反追踪,从客户的真实ip为起点,穿过多层级的proxy ,最终到达web 服务器,都会记录下来,所以在获取用户真实ip的时候,一般就可以设置成,proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这样就能获取所有的代理ip和客户ip了。
这里有一个从nginx日志中截取的一个片段,如下:
可以看到红框内,有两个ip,117.69.128.245应该是上游的代理IP,而222.124.204.83则是客户IP(其实也是一个代理IP,使用了nginx作为反代)。
参考资料:
评论列表