前言
前几天购买了法国 KS1 来安装图床,并且套上了 cloudflare,安装完后发现Nginx日志记录的 IP 全部都是CDN(cloudflare)节点的 IP,而不是用户真实的用户 IP 记录。如果我们需要进行日志分析时候就比较困难,我比较常用的就是Nginx环境,怎么针对 Nginx 环境进行设置,在既想用CDN加速的同时,网站的日志也可以看到是真实 IP 地址。
其他更多网站安全优化
解决方案
这里我安装的是军哥的 LNMP,网上找了一些教程都比较复杂,这里有 2 个最简单的方法:
方法一
修改 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf 文件,添加在 http 字段中:
log_format access '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" ';
然后再修改当前站点/usr/local/nginx/conf/vhost/img.7198.net.conf 日志记录后加上 access
access_log /www/wwwlogs/img.7198.net.log access;
重启 Nginx,OK
service nginx reload
这个方法兼容性不好,下面的方法二可以兼容套 CDN 和没套 CDN 一起使用。
方法二
修改 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
access_log /www/wwwlogs/img.7198.net.log access;
重启 Nginx,OK
service nginx reload
方法二主要是为了通用性,如果关闭了 CDN,可以不需要修改获取 IP 的方式;
这里我们很多朋友可能不会用同样的 Nginx 环境,但是大概意思都差不多。
结语
这里我只测试了 cloudflare 的 CDN 没有问题,已经在日志里获取到真实 IP 了,其他的 CDN 大家去自行测试,有问题可以在下方留言!
© 本站文章随意转载,但请注明出处!
>> 如果您觉得本站文章对您有所帮助,购买 VPS 时候请走本站AFF链接!
>> 某些文章具有时效性,若内容有错误或已失效,欢迎在下方评论区留言向我们反馈.
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
THE END
include vhost/*.conf;
设定修改为常规站点,例如:include vhost/xxx.com.conf;