1. error_log
A. error_log:记录自身运行故障或用户访问出错的信息,可以调试nginx服务;
B. 格式及默认值: 关键字 日志文件 [错误日志级别] (error_log logs/error.log error);
C. 日志级别:debug info notice warn error crit alert emerg,级别越高记录的信息越少,不要设置info等级较低的级别,否则会带来大量的磁盘I/O消耗;
D. 标签段位置:main,http,server,location。
2. access_log
A. access_log:记录客户端的请求日志,可以获取用户ip和浏览器等信息;
B. 默认值:access_log logs/access_log main,需要开启log_format,注意main是与log_format中main字段一致的;
C. 关闭日志:access_log off;
D. 标签段位置:http,server,location。
3. log_format
A. log_format:日志的格式;
B. 默认值:#
$remote_addr | 访问网站的客户端地址 |
$remote_user | 远程客户端用户名 |
$time_local | 访问时间与时区 |
$request | 用户的http请求起始行信息 |
$status | http状态码,记录请求返回的状态码 |
$body_bytes_sent | 服务器发送给客户端的响应body字节数 |
$http_referer | 记录此次请求是从哪个链接访问过来的,可以根据参数进行防盗链设置 |
$http_user_agent | 记录客户端访问信息 |
$http_x_forwarded_for | 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置 |
$request_time | 指从接受用户请求数据到发送完回复数据的时间 |
$upstream_response_time | 指从nginx向后端建立连接开始到接受完数据然后关闭连接为止的时间 |
D. 标签段位置:http;
E. $request_time与$upstream_response_time字段含义
如果$request_time远大于$upstream_response_time值,则需要查看nginx模块配置或nginx与客户端的网络是否有性能瓶颈了;
如果$request_time与$upstream_response_time值相差不大,则可能是nginx连接上游服务器比较慢,或者上游服务比较慢,需要进入下一步应用层排查;
4. 获取URL请求的参数
A. 获取请求头参数:$http_HEADER,如:$http_host;
B. 获取GET参数:$arg_PARAMETER,如:$arg_id;
C. 获取cookie参数:$cookie_SESSIONID,SESSIONID代表cookie的名称;