nginx日志配置核心是access_log和error_log指令,配合log_format自定义格式;access_log支持多作用域分级配置与缓冲压缩优化,error_log仅可设路径和级别(生产推荐warn),需语法检查后重载生效。

Nginx 的日志配置核心在于两个指令:access_log(访问日志)和 error_log(错误日志),配合 log_format(自定义格式)使用。配置不难,但需注意作用域、变量含义和性能影响。
访问日志格式配置(access_log + log_format)
访问日志记录每次 HTTP 请求详情,由 log_format 定义结构,access_log 指定存储位置和选用格式。
-
在
http块中定义日志格式(推荐命名清晰,如simple或main):log_format simple '$remote_addr [$time_local] "$request_method $request_uri" $status $body_bytes_sent';
常用变量说明:
$remote_addr:真实客户端 IP(若经代理,需配合$http_x_forwarded_for)$time_local:本地时间,格式如18/Jul/2026:11:05:33 +0800$request_method和$request_uri:拆分请求行,比$request更易解析$status:HTTP 状态码,是排查问题的关键字段$body_bytes_sent:响应体字节数,用于估算带宽消耗-
启用访问日志时引用该格式:
access_log /var/log/nginx/access.log simple;
可加优化参数(非必需但实用):
buffer=64k:启用内存缓冲,减少磁盘 I/Oflush=1s:缓冲区每秒强制刷盘一次gzip:写入前自动压缩(节省空间,轻微 CPU 开销)
注意:
access_log可放在http(全局)、server(单站点)、location(路径级)块中,后级会覆盖前级。建议按需分级配置,例如为 API 接口单独设日志。
错误日志格式配置(error_log)
错误日志由 Nginx 核心模块处理,不支持自定义格式,只可设置路径和级别。
-
基本写法(推荐放在
http或main块):error_log /var/log/nginx/error.log warn;
日志级别从高到低(信息量递增):
emerg/alert/crit/error/warn(常用,平衡可读性与噪音)notice/info/debug(仅调试时启用,debug会产生海量日志,慎用)默认级别为
crit,记录严重错误;生产环境推荐warn,能捕获配置警告、连接异常等有价值信息,又避免冗余。
验证与生效
修改配置后务必检查语法并重载:
sudo nginx -t # 测试配置是否合法 sudo systemctl reload nginx # 平滑重载,不中断服务
查看当前实际生效的日志路径:
sudo nginx -T 2>&1 | grep -E "(access_log|error_log)"
日志路径常见位置
- 包管理安装(如 Ubuntu/CentOS):
/var/log/nginx/access.log和/var/log/nginx/error.log - 源码编译安装:通常在
/usr/local/nginx/logs/下
路径可自由指定,只要 Nginx 进程对目标目录有写权限即可。











