nginx访问日志
访问日志文件名称
access.log
配置方式
访问日志位置:
在主日志nginx.conf的http域配置:
access_log /nginx/log/access.log main;
如果不设定,那么默认配置为编译安装指定的日志文件目录
main参数:只能配置到一个主访问日志的后面,如果业务访问需要配置多个日志,且都为同样的格式,那么可以指定其他变量名称,如:
log_format logvar " ";
access_log /nginx/log/access.log logvar; 指定变量名称为logvar
配置不记录日志:access_log off;
访问日志格式:
需要在http域进行配置
$remote_addr 客户端地址,也可以指上一级代理服务器地址
$remote_user 客户端用户名称,一般为空
$time_local 访问的时间和时区
$request 包括请求方式,请求uri,http协议
$http_host 请求地址:域名/ip
$status 请求返回状态码
$body_bytes_sent 发送给客户端/上一级服务器文件内容大小
$http_referer url跳转来源,访问该页面是从哪个url请求来的
$http_user_agent 请求的客户端的相关信息,包括浏览器名称,内核版本,客户端系统名称,版本,位数等信息
$http_x_forwarded_for 当有代理服务器时,记录真实访问的ip地址,上一级服务器也需要设置x_forwarded_for相关的参数
$request_time 请求的响应时间,单位s,从客户端/上一级服务器请求开始,到服务端响应完成所有的请求内容,并将请求记录写入日志,这一过程的时间
$connection_requests 当前通过一个连接获得的请求数量
$request_length 请求长度,包括请求行,请求头,请求体
$upstream_addr 反向代理的后端服务器地址
$upstream_response_time 与后端服务器建立连接到断开的时间
$upstream_status 向后端服务器请求返回的状态码
配置示例:
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" "$status" "$body_bytes_sent"'
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for"'
'"$upstream_addr" "$request_time" "$upstream_response_time"'
"$upstream_status";
日志分析
172.16.0.2 - - [17/Jan/2023:13:42:21 +0800] "GET /article/20 HTTP/1.0" "200" "70683""https://139.198.178.40:18081/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "117.61.191.151""127.0.0.1:18082" "0.064" "0.064"200
1.172.16.0.2 访问上一级服务器名称 $remote_addr
2.- 客户端访问用户名称,在这里为空 $remote_user
3.[17/Jan/2023:13:42:21 +0800] 记录访问时间 $time_local
4.GET /article/20 HTTP/1.0 请求方式 请求访问的路径地址 http协议 $request
5.200 访问状态码 $status
6.70683 返回给上一级的请求的文件大小 $body_bytes_sent
7.https://139.198.178.40:18081/ url跳转来源 $http_referer
8.Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 请求的客户端相关信息 $http_user_agent
9.117.61.191.151 真正发起请求的客户端ip $http_x_forwarded_for
10.127.0.0.1:18082 代理的后端服务器地址,端口 $upstream_addr
11. 0.064 前面的0.64对应整个服务请求的响应时间,后面的0.64对应的向后端服务器请求的响应时间 $request_time $upstream_response_time
12.200 后端请求返回状态码 $upstream_status