使用CDN后Nginx源站如何获取用户真实IP
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
本文链接:https://www.orcy.net.cn/3074.html,转载请附上原文出处链接
发表评论