nginx 日志配置

配置访问日志和错误日志,自定义日志格式

语法

access_log path [format]; error_log path [level];

参数

参数说明示例级别
access_log 访问日志路径 access_log /var/log/nginx/access.log; 常用
error_log 错误日志路径和级别 error_log /var/log/nginx/error.log warn; 常用
log_format 自定义日志格式 log_format main '...'; 常用
access_log off 关闭访问日志 access_log off; 进阶

示例

JSON 格式日志

log_format json_log escape=json '{
    "time": "$time_iso8601",
    "remote_addr": "$remote_addr",
    "request": "$request",
    "status": $status,
    "body_bytes_sent": $body_bytes_sent,
    "request_time": $request_time,
    "upstream_response_time": "$upstream_response_time"
}';

access_log /var/log/nginx/access.json json_log;
方便 ELK 等日志系统解析

按域名分日志

server {
    server_name api.example.com;
    access_log /var/log/nginx/api.access.log;
    error_log /var/log/nginx/api.error.log;
}
每个站点独立日志文件

静态资源不记日志

location ~* \.(css|js|jpg|png|gif|ico)$ {
    access_log off;
    expires 30d;
}
减少日志量,静态资源不需要记录

常见错误

日志文件越来越大 配置 logrotate 定期轮转:/etc/logrotate.d/nginx

技巧

相关命令