在 Nginx 中关闭静态资源 access_log 的核心方法是:1. 用正则 location 匹配后缀并设 access_log off;2. 用前缀 location 匹配静态目录并关闭日志;3. 利用日志继承性,在对应 location 内显式关闭;4. 重载后验证 JS 等静态请求不记日志而动态接口仍记录。

在 Nginx 中关闭静态资源(如 CSS、JS、图片等)的 access_log,核心思路是:**对匹配静态文件路径或后缀的 location 块,单独设置 access_log off;**。这样既保留主日志记录动态请求,又避免日志被大量静态请求刷屏。
1. 用 location 匹配静态文件后缀
最常用且直观的方式是在 server 或 http 块中,添加一个专门匹配静态资源的 location,并在其中关闭访问日志:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
log_not_found off;
access_log off; # 关键:关闭该 location 的访问日志
add_header Cache-Control "public, immutable";
}说明:
-
~*表示不区分大小写的正则匹配; - 后缀列表可根据项目实际增删(例如加上
webp、mp4等); -
log_not_found off可选,避免 404 静态文件也写入 error_log; - 确保该 location 在更通用的
location /之前,否则可能被覆盖(Nginx 按匹配优先级执行,正则 location 优先级高于前缀匹配,但书写顺序仍影响嵌套逻辑)。
2. 用 location 前缀匹配静态目录
如果静态资源统一放在特定路径下(如 /static/、/assets/),推荐用前缀匹配,性能略优于正则:
对设计或页面进行 WCAG 2.1 AA 无障碍审计。触发关键词:“audit accessibility”、 “check a11y”、 “is this accessible?” 或在审查设计时使用。
location ^~ /static/ {
expires 1y;
access_log off;
alias /var/www/myapp/static/;
}说明:
-
^~表示前缀匹配且优先于正则,适合明确路径; -
alias或root配合使用,确保文件能正确返回; - 同样需注意 placement:该块应放在通用
location /之前,防止被兜底规则捕获并记日志。
3. 注意日志继承与作用域
Nginx 的 access_log 是可继承的。默认 server 块开启日志,子 location 不显式关闭就会继承上级配置。因此:
- 只要在某个 location 内写了
access_log off;,该 location 下所有匹配请求都不记 access_log; - 不同 location 可以各自独立设置日志路径或开关,互不影响;
- 若想彻底禁用某类请求日志,不要只依赖
if判断(if在 location 外不支持access_log指令),必须用 location 分流。
4. 验证是否生效
修改配置后务必重载,并检查日志行为:
- 运行
nginx -t测试语法; - 执行
nginx -s reload重载配置; - 访问一个 JS 文件(如
/app.js),观察access.log是否不再新增该行; - 同时访问一个接口(如
/api/user),确认动态请求仍被记录——验证分流有效。

















