Nginx 服务器日志配置 – 解决使用CDN记录真实用户IP(包括宝塔)

文章目录

[隐藏]

  • 修改的配置文件位置
  • 参数配置

关于nginx的日志配置,之前写过一:http://www.vuln.cn/2989 ,今天又用到发现其中还有很多点没有提及到,所以再写一篇记录全面一点。

修改的配置文件位置

该怎么改网上的教程已经很多,但是到底在哪个文件的什么地方修改,如何生效这才是根本问题。

我们需要修改是的nginx.conf 根配置文件

使用lnmp的服务器一般配置文件在:/usr/local/nginx/conf/nginx.conf,宝塔的配置文件我发现有两个地方有nginx.conf配置文件:/www/server/nginx/conf/nginx.conf/www/server/nginx/src/conf/nginx.conf。有效的配置文件是:/www/server/nginx/conf/nginx.conf

在以下位置添加修改的配置:

其中需要注意的是log_format main,这里的main,需要在vhost中各站点的日志配置的地方要带上,表示使用这个配置,如图:

修改以上两个位置即可让配置生效。

参数配置

通过抓包可以看到,cdn节点在溯源请求服务器地址的时候会将用户客户端的ip带上,以X-Forwarded-ForCF-Connecting-IP两个参数的形式,如图:

如果客户端加一个x-forwarded-for参数来尝试篡改,实际上该参数会有两个ip,后面的一个ip永远是真实ip,前面是伪造的:“8.8.8.8,163.160.73.253”

所以在配置日志参数时,可以将X-Forwarded-For参数的值放到第一位,nginx模块中的变量为$http_x_forwarded_for,所以最终的格式为以下,其中保留了原始的$remote_addr,否则真实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" "$http_x_forwarded_for"';  

综合以上的配置,最终日志格式完美记录真实ip与cdn节点的ip:

原文出处:tuisec -> https://paper.tuisec.win/detail/b9c2483d5734194

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。