1.错误日志
错误日志就是记录当前网站访问失败的记录。
- Nginx配置错误日志:
语法:erroer_log file(存放错误日志路劲) file[level](日志级别);
默认格式:error_log logs/error.log erroer;
支持位置模块:main;http,stream,server,location
-
日志级别:
常见的错误日志级别有[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越少。生产场景一般是 warn | error | crit 这三个级别之一
示例:
$ vim /opp/app/nginx/conf/nginx.conf
#开启错误日志
error_log /data/logs/nginx/nginx_error.log warn; #我直接设置在main中,所有的错误日志都记录进去,也可以设置在针对单个域名进行设置。
#关闭错误日志
error_log /dev/null
$ nginx -s reload
$ cat /data/logs/www/nginx_error.log #错误日子信息,格式是固定的,看的很明白了,就不解释了
2019/09/29 02:59:33 [error] 8860#0: *3 open() "/home/ac/favicon.ico" failed (2: No such file or directory), client: 10.28.88.106, server: 10.28.88.199, request: "GET /favicon.ico HTTP/1.1", host: "10.28.88.199"
2.访问日志
访问日志就是记录用户访问信息,通过访问日志可以分析用户数据,非常有用的。
访问日志分为2部分,一部分是log_format 一部分是access_log
2.1 log_format
log_format主要是设置访问日志格式,让用户访问的信息以什么样方式来展现给你,可以自定义,也有默认的一个log_format访问结构。
格式:log_format name(定义当前格式名字,需要被后面的access调用的,当初不注意这个,恰了好大的亏) 具体格式
2.2 access_log
格式: access_log path(log_format定义的name) [format [buffer=size] gzip=[level] [flush=time] [if=condition]]
access_log off;关闭访问日志
后面[ ]的内容:buffer 是设置缓冲大小(32k 64k 都差不多) gzip 压缩登记(1-9) flush 设置缓冲数据落地到磁盘的时间看情况设置,if是其他设置([ ] 这里面的内容可选设置主要看需求,一般情况是用不到)
示例:
log_format jflog '$remote_addr | $remote_user | $time_local | $request | $status | '
'$bytes_sent | $body_bytes_sent | $host | $http_referer | $http_user_agent | '
'$upstream_addr | $gzip_ratio | $http_x_forwarded_for | $request_time | $upstream_response_time';
#参数介绍
$remote_addr #获取客户端地址
注:当Nginx作为web后端,前面有代理,负载均衡等服务的时候,只能获取前端地址,想要获取真正客户端地址得靠$http_x_forward_for参数,
但是需要前端开启x_forward_for功能,
$remote_user #记录远程客户端用户
$time_local #记录访问时间跟时区信息
$request #记录请求信息(url,http协议) "GET / HTTP/1.1"
$status #记录客户端获取请求返回的请求码,200,304,404等等
$bytes_sent #记录Nginx返回给客户端的字节数(整个响应内容大小)
$body_bytes_sent #记录客户端请求的主体大小(也就是实际内容的大小,在缓冲缓存配置那里有篇博客详细的介绍了请求及响应构成)
$http_referer #url跳转来源,可以轻松查询倒链的问题。
$http_user_agent #用户终端浏览器等信息
$upstream_addr #后端服务器地址
$gzip_ratio #获取gzip压缩比率
$http_x_forwarded_for #获取客户端真实ip(需要前端开启x_forward_for功能)
$host
$request_time #记录Nginx处理请求的时间
$upstream_response_time #记录php-cgi的响应时间
$scheme #请求使用的Web协议,“http” 或 “https”
$http_cdn_src_ip #获取客户的真实ip(前提是当前机器是走cdn的)
#具体设置access_log方法
# cat /opt/app/nginx/conf/vhost/7240.conf
server {
listen 80;
server_name 192.168.1.104;
root /opt/src;
access_log /data/logs/www/dx4.7240.com.log jflog(你在log_format自定义的日志名字);
}
官方示例:
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log compression buffer=32k;
官方文档:http://nginx.org/en/docs/http/ngx_http_log_module.html
#日志展示结果
$ cat /data/logs/www/dx4.7240.com.log #下面就是以log_format展示的日志文件信息
192.168.1.100 | - | 01/Oct/2019:08:43:42 -0400 | GET /favicon.ico HTTP/1.1 | 404 | 310 | 162 | 192.168.1.104 | - | Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko | - | - | - | 0.000 | -