Skip to content
On this page

nginx日志

一、日志配置

位于主配置文件中 [[nginx主配置文件#③ HTTP模块]]

1.错误日志

===路径:===/var/log/nginx/error.logerror_log ![[nginx主配置文件#① 核心模块]]

2.访问日志

===路径:===/var/log/nginx/access.log ![[nginx主配置文件#③ HTTP模块]]

3.日志格式

通过log_format进行配置 日志输出路径为/var/log/nginx/access.log

bash
#这是上面默认配置下的日志输出例子
106.57.86.120 - - [11/Jan/2022:05:18:56 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55" "-"
  • $remote_addr--远程地址,指的是客户端的ip地址,对应106.57.86.120
  • $remote_user--远程用户,这里是匿名访问,默认一个占位符,对应-
  • $time_local--本地时间,服务器本地时间,对应11/Jan/2022:05:18:56 +0000
  • $request--请求,用户请求的内容,对应GET / HTTP/1.1,Get后面/表示的是根目录默认主页index.html,如果是/1.html则表示请求的是根目录下的1.html
  • $status--[[HTTP状态码]],对应200
  • $body_bytes_sent--文件大小(多少字节),对应615
  • $http_referer--网站引用链接点,超链接,代表的是来到当前服务器的上一个跳转点,如果没有则为-|500
  • $http_user_agent--记录用户的浏览器,对应"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55"
  • $http_x_forwarded_for--代理IP,此处没有配置代理,对应-

4.日志缓存

大量访问到来时,对于每一条记录都将是先打开文件再写入日志,然后关闭,占用了系统资源,与业务无关。可以使用open_log_file_cache来设置,设置在server块中。

bash
# 缓存最多1000个,到了极限每分钟开始清除,20s内小于3次访问的。即检查周期为1m(1分钟)
open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m;

===默认关闭,官方也不建议打开===

二、日志轮转

===目录:=== etc/logrotate.d/nginx

bash
/var/log/nginx/*.log { #针对哪个日志进行轮转
        daily  #轮转周期,以天为单位
        missingok  #丢失不提示,这个文件丢了不提示
        rotate 52  #保留52份,这里就是保留52天
        compress   #压缩
        delaycompress  #延迟压缩
        notifempty  #空文件的话不转存
        create 640 nginx adm  #权限相关
        sharedscripts
        postrotate  #重启脚本
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

三、日志分析

以后搞运维的时候需要进一步学习 10分钟精通Nginx访问日志分析统计-阿里云开发者社区 (aliyun.com)