nginx日志
一、日志配置
位于主配置文件中 [[nginx主配置文件#③ HTTP模块]]
1.错误日志
===路径:===/var/log/nginx/error.log
error_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
--网站引用链接点,超链接,代表的是来到当前服务器的上一个跳转点,如果没有则为-
$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)