在 Nginx 中,查看日志是诊断问题和监控 Nginx 服务状态的重要手段。Nginx 通常有两种主要的日志文件:访问日志(access log)和错误日志(error log):
一、关于日志文件
1、文件位置
Nginx 的日志文件位置在 Nginx 配置文件中指定。默认情况下,它们通常位于 /var/log/nginx/ 目录下,但这可以根据您的配置不同而变化。您可以在 Nginx 的主配置文件(通常是 /etc/nginx/nginx.conf)或站点特定的配置文件中找到这些设置。
例如,配置文件中可能包含以下行:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
还可以针对每个代理服务配置独立的日志文件
#静态文件
location ^~ /my-h5 {
set $bg_context_path my-h5;
set $backend my_h5_upstream;
rewrite_by_lua_file '/usr/local/nginx/nginx/src/upstream_chooser.lua';
proxy_pass http://$backend/;
access_log logs/my_h5.log main;
}
#tomcat服务
location ~ /myTest/(.*) {
set $bg_context_path myTest;
set $backend myTest_upstream;
rewrite_by_lua_file '/usr/local/nginx/nginx/src/upstream_chooser.lua';
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://$backend;
access_log logs/access_myTest.log main;
}
2、日志配置
2.1、日志轮换
请注意,为了防止日志文件无限增长,Nginx 日志可能会被轮换。轮换后的日志文件可能会被压缩存储,并且名称会有所变化,如 access.log.1.gz
。
二、访问日志
1、列含义
访问日志为json串格式,如:
列含义如下:
参数 说明 示例
$remote_addr 客户端地址 172.17.0.1
$remote_user 客户端用户名称 --
$time_local 访问时间和时区 [29/Dec/2022:10:17:14 +0000]
$request 请求的URI和HTTP协议 "GET /test/nginx/proxy HTTP/1.1"
$http_host 请求地址,即浏览器中你输入的地址(IP或域名) 10.1.7.33
$status HTTP请求状态 200
$upstream_status upstream状态 200
$body_bytes_sent 发送给客户端文件内容大小 38
$http_referer url跳转来源 -
$http_user_agent 用户终端浏览器等信息 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
$http_cookie 用户cookie信息 "grafana_session=73d13d456cb4363f8a48f5501348669e"
$ssl_protocol SSL协议版本 TLSv1
$ssl_cipher 交换数据中的算法 RC4-SHA
$upstream_addr 后台upstream的地址,即真正提供服务的主机地址 "10.1.7.33:8102"
$request_time 整个请求的总时间 0.012
$upstream_response_time 请求过程中,upstream响应时间 0.012
三、错误日志:
错误日志记录了 Nginx 的错误信息,对于调试配置问题或运行时错误非常有用。