Nginx默认日志格式中 $remote_addr
打印出来的就是用户的IP地址,但在使用CDN后,打印出来的IP地址就变成了CDN回源节点的IP地址,因为 remote_addr
只能获取最近一跳的IP地址。
解决办法:
编辑nginx.conf文件,确认一下配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
这样 $http_x_forwarded_for
就可以获取到用户的真实IP,如上配置,这样用户的真实IP会显示在一条日志的最后边,审计起来不是很方便,可以稍作修改,把真实IP显示在每条日志的最前边,修改如下:
log_format main '"$http_x_forwarded_for" -* $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
在vhost配置文件中,添加以下内容,让日志记录是调用格式main
access_log /var/log/nginx/test.log main
配置好以上内容后,每条日志 -* 前边就会显示用户的真实IP,如下图1
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)