NGINX 日志
访问日志配置规则
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format # 日志格式
- $remote_addr #远程地址,记录客户端ip地址
- $remote_user #远程访问用户
- [$tune_local] 服务器自身时间
- $request #请求,记录请求的url和http协议
- $status # 状态,记录http请求状态码
- $body_bytes_sent # 发送给客户端的字节数,不包括响应头的大小
- $http_referer #记录从哪个页面链接访问过来的
- $http_user_agent #记录客户端浏览器代理相关信息
- $http_x_forwarded_for #代理Ip
个性化404错误页配置
server{
listen 80;
server_name dalei.com;
error_page 404 /404.html;
location = /404.htnl {
root /dalei;
}
}
在dalei 文件夹下创建404.html页面
systemctl restart nginx #重启nginx
重启后访问不存在的页面就会跳转到dalei文件夹下的404.html页面
日志缓存
- 当大量访问到来时,对于每一条日志记录,都将是先打开文件,在写入日志,然后关闭,占用了系统IO与业务无关,如何节省IO可以使用
open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m; 来设置。
- max=1000 指的是日志文件的FD(文件描述符),最大的缓存数量为1000,
- inactive=20s 用户不活跃时间,每20秒检测一次
- min_uses=3 20秒内小于3次访问FD,就清理掉FD,结合inactive 20s 的时间
- valid=1m 检测周期为1分钟
总结: 缓存最大支持开启1000个FD(日志文件),到了极限每分钟开始清除掉,20秒内小于3次的文件FD。 官方不建议打开,日志缓存虽然节省了磁盘,但是增大了内存资源占用
日志轮转/切割
- nginx 安装,会默认启动日志轮转
rpm -ql nginx|grep log # 查找日志轮转文件
/var/log/nginx/*.log {
daily
missingok
rotate 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
}
日志分析
网站ip,pv,uv都可以使用日志分析后得出
UV统计 awk '{print $10}' host.access.log | sort -r |uniq -c |wc -l 独立IP awk '{print $1}' host.access.log | sort -r |uniq -c | wc -l 总PV awk '{print $6}' host.access.log | wc -l 统计当个页面访问量 grep index.html host.access.log | wc -l
|