Linux下Nginx访问日志路径由access_log指令决定,默认为/var/log/nginx/access.log;可通过sudo nginx -T | grep "access_log"确认实际路径,修改后需创建目录、赋权、语法校验并重载配置。

Linux 下 Nginx 访问日志默认路径是 /var/log/nginx/access.log,但这个位置不是写死的,而是由配置文件中 access_log 指令决定的。只要没在配置里显式指定,多数发行版(如 Ubuntu、CentOS)安装后会沿用这个路径。
确认当前生效的访问日志路径
别猜,直接查配置生效结果:
- 运行
sudo nginx -T | grep "access_log",输出中带路径的那一行就是实际使用的地址 - 如果没输出,说明可能被注释了,或整个 http/server 块没配 access_log —— 此时 Nginx 会退回到编译时设定的默认路径(通常是 /var/log/nginx/access.log)
- 也可检查主配置:
grep -r "access_log" /etc/nginx/
修改访问日志路径的三种常用方式
修改位置取决于你想覆盖的范围:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
全局修改(推荐统一管理):在
/etc/nginx/nginx.conf的http块内添加或修改access_log /data/logs/nginx/access.log main;
这样所有 server 都会默认用这个路径,除非被局部覆盖 -
按站点修改:在某个
server块里写access_log /var/log/nginx/example.com_access.log main;
适合多域名共存、需要隔离分析的场景 -
按目录/资源类型修改:在
location块里写,比如静态资源单独记日志
location /static/ {<br> access_log /var/log/nginx/static_access.log main;<br>}
注意:该 location 内请求将不再写入上级 access_log
改完必须做的几件事
路径改了不等于立刻生效,漏一步就白配:
- 确保目标目录存在:
sudo mkdir -p /data/logs/nginx - 赋予 Nginx 工作用户写权限(常见用户是
nginx或www-data):sudo chown nginx:nginx /data/logs/nginxsudo chmod 755 /data/logs/nginx - 语法校验:
sudo nginx -t—— 必须显示 “syntax is ok” - 重载配置:
sudo nginx -s reload(不是 restart)
顺便提一句错误日志
error_log 路径修改逻辑和 access_log 完全一致,也支持 http/server/location 三级作用域。默认路径同样是 /var/log/nginx/error.log,常设级别为 warn,调试时可临时调成 info(需编译支持 debug 日志)。

















