nginx access_log指令通过off开关或指定路径控制日志记录,支持http/server/location三级作用域覆盖,需确保路径存在、权限正确并配合log_format自定义格式。

要配置 Nginx 的 access_log 指令来控制访问日志的存储路径和开关,核心在于理解其语法结构与作用域层级,并合理配合 off 关键字和文件路径。
明确 access_log 的基本语法与开关逻辑
access_log 指令默认开启,只要未显式关闭就记录日志。关闭方式不是注释掉该行,而是设为 off;启用则需指定日志文件路径(支持绝对路径或相对于 Nginx 安装前缀的相对路径)。
-
access_log /var/log/nginx/access.log;—— 启用并写入指定文件 -
access_log off;—— 显式关闭当前作用域的日志记录 - 不写该指令时,Nginx 会继承上级作用域配置(如 http 块中定义的默认路径)
按作用域精细控制日志路径与开关
日志行为可在 http、server、location 三个层级配置,低层级会覆盖高层级设置。例如:
对设计或页面进行 WCAG 2.1 AA 无障碍审计。触发关键词:“audit accessibility”、 “check a11y”、 “is this accessible?” 或在审查设计时使用。
- 在
http块中统一设定全局路径:access_log /var/log/nginx/global_access.log; - 在某个
server块中关闭该站点日志:access_log off; - 在特定
location中单独记录静态资源访问:access_log /var/log/nginx/static_access.log;
注意:同一作用域内不能多次使用 access_log(除非配合 buffer 或 gzip 参数),否则会报错。
确保路径存在且 Nginx 有写入权限
指定路径后,必须手动创建目录并授权:
- 执行
mkdir -p /var/log/nginx - 确认 Nginx 工作用户(如
www-data或nginx)对该目录有写权限:chown www-data:www-data /var/log/nginx - 重启或重载 Nginx:
nginx -s reload,避免因权限或路径问题导致日志静默失效
配合 log_format 实现格式自定义(可选但实用)
若需调整日志内容字段(如添加响应时间、真实 IP),需先定义格式,再在 access_log 中引用:
- 在
http块中定义:log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $request_time'; - 启用时指定格式:
access_log /var/log/nginx/access.log main; - 格式名(如
main)区分大小写,且必须先定义后引用










