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; #定义错误页
#实际404定位位置
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/下的所有日志文件
/var/log/nginx/*.log {
daily #轮转周期以天为单位
missingok #日志丢失不提示
rotate 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
}
日志分析
网站ip,pv,uv都可以使用日志分析后得出
UV统计
awk '{print $10}' host.access.log | sort -r |uniq -c |wc -l
独立IPawk '{print $1}' host.access.log | sort -r |uniq -c | wc -l
总PVawk '{print $6}' host.access.log | wc -l
统计当个页面访问量grep index.html host.access.log | wc -l