Nginx使用CDN(CloudFlare)获取网站日志真实IP地址
前言
前几天购买了法国 KS1 来安装图床,并且套上了 cloudflare,安装完后发现 Nginx 日志记录的 IP 全部都是 CDN(cloudflare)节点的 IP,而不是用户真实的用户 IP 记录。如果我们需要进行日志分析时候就比较困难,我比较常用的就是 Nginx 环境,怎么针对 Nginx 环境进行设置,在既想用 CDN 加速的同时,网站的日志也可以看到是真实 IP 地址。
解决方案
这里我安装的是军哥的 LNMP,网上找了一些教程都比较复杂,这里有 2 个最简单的方法:
方法一
修改 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf 文件,添加在 http 字段中:
方法二
修改 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf
文件,添加在 http 字段中:
map $HTTP_CF_CONNECTING_IP $clientRealIp
{
"" $remote_addr;
~^(?P[a-z0-9.:]+),?.*$ $firstAddr;
}
log_format access '$clientRealIp [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'$http_user_agent $remote_addr $request_time';
然后再修改当前站点/usr/local/nginx/conf/vhost/img.7198.net.conf
日志记录后加上 access
这里我们很多朋友可能不会用同样的 Nginx 环境,但是大概意思都差不多。
结语
这里我只测试了 cloudflare 的 CDN 没有问题,已经在日志里获取到真实 IP 了,其他的 CDN 大家去自行测试,有问题可以在下方留言!
![](https://kz.cx/wp-content/uploads/2021/10/Pasted-11.png)