使用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

使用CDN后Nginx源站如何获取用户真实IP-下一朵云
图1 日志显示真实IP
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。