默认日志路径由编译参数和配置文件两级控制:--prefix决定logs子目录基础路径,--error-log-path与--http-log-path可指定绝对日志路径,但最终以nginx.conf中error_log和access_log指令为准。

编译安装 Nginx 时,默认日志路径是 /usr/local/nginx/logs/,但你可以通过配置参数和配置文件两级控制日志存放位置。
编译时用 --prefix 和 --error-log-path 指定基础路径
在执行 ./configure 时,使用以下关键参数可预先设定日志根目录或默认日志文件路径:
-
--prefix=/opt/nginx:指定 Nginx 安装根目录,后续的logs/子目录将基于此路径(如/opt/nginx/logs/) -
--error-log-path=/var/log/nginx/error.log:直接指定错误日志的绝对路径(该路径必须存在且 Nginx 进程有写权限) -
--http-log-path=/var/log/nginx/access.log:指定访问日志的默认路径(仅影响nginx.conf中未显式配置access_log时的 fallback 值)
示例命令:
./configure --prefix=/opt/nginx \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log
运行时在 nginx.conf 中精确控制日志路径
编译参数只是“默认值”,真正生效的日志路径由配置文件决定。编辑 conf/nginx.conf(或你实际加载的配置),在 http、server 或 location 块中设置:
-
error_log /var/log/nginx/error.log warn;:指定错误日志路径和级别(支持debug、info、warn等) -
access_log /var/log/nginx/access.log main;:指定访问日志路径和日志格式(main是内置格式名,也可自定义) - 可为不同 server 或 location 单独设置日志,实现按域名或路径分流记录
注意:路径需提前创建,且确保 Nginx worker 进程(通常是 www-data 或 nginx 用户)有写权限:
sudo mkdir -p /var/log/nginx
sudo chown nginx:nginx /var/log/nginx
验证与重载
修改后务必检查语法并重载配置:
-
sudo /opt/nginx/sbin/nginx -t:测试配置是否合法 -
sudo /opt/nginx/sbin/nginx -s reload:平滑重载(不中断服务) - 查看日志路径是否生效:
sudo tail -f /var/log/nginx/access.log
常见注意事项
- 若
access_log或error_log路径写错(如目录不存在、权限不足),Nginx 启动或重载会失败,错误信息会输出到标准错误或stderr,也可查error.log自身(如果能写入) - 日志路径支持变量,例如
access_log /var/log/nginx/$host-access.log;,用于按域名自动分文件 - 使用
log_format自定义格式时,需确保access_log引用的格式名已定义











