可通过Nginx的location块配合access_log off关闭特定扩展名请求的日志记录,推荐用不区分大小写的正则~*.(js|css|png|jpg|gif|ico|woff2?)$匹配静态资源,并确保该location置于更通用的location /之前以避免被覆盖。

可以通过 Nginx 的 access_log off 指令配合 location 块,对匹配特定扩展名的请求关闭访问日志记录。
在 location 块中匹配扩展名并关闭日志
在 server 或 http 块中,使用正则或前缀 location 匹配目标文件类型,并在其中设置 access_log off:
- 推荐用
~* \.(js|css|png|jpg|gif|ico|woff2?)$这类不区分大小写的正则匹配静态资源 - 必须将该 location 块放在更通用的
location /之前,否则可能被覆盖(Nginx location 匹配有优先级规则) - 无需额外 rewrite 或 proxy_pass,仅日志控制,保持原有响应行为不变
示例配置片段
以下配置禁用常见静态资源的访问日志:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|webp)$ {
access_log off;
expires 1y;
add_header Cache-Control "public, immutable";
}注意:access_log off 是明确关闭日志的关键;expires 和缓存头仅为增强实践,非必需。
验证是否生效
修改配置后需重载 Nginx(nginx -s reload),然后检查日志文件变化:
- 直接请求一个匹配的文件(如
/style.css),观察 access log 文件是否无新增行 - 同时请求一个不匹配的路径(如
/api/user),确认日志仍正常记录 - 可用
tail -f /var/log/nginx/access.log实时跟踪验证
注意事项与常见误区
避免以下典型问题:
- 不要在
if块中写access_log off—— Nginx 不允许在 if 中配置日志开关 - 不要遗漏
off后的分号,否则配置校验失败(nginx -t会报错) - 若使用了多个日志文件(如按 host 分离),需确保所有相关 location 都显式关闭,或统一在顶层用 map 控制(进阶方案)


















