应仅在静态资源 location 块中关闭 log_not_found,如匹配 .js|.css|.png 等后缀的正则 location,避免全局关闭;典型配置为 location ~* .(js|css|png|...)$ { log_not_found off; }。

可以通过开启 log_not_found 指令的关闭选项,让 Nginx 不记录 404 类型的静态资源缺失日志,从而大幅减少无效错误日志干扰。
理解 log_not_found 的作用
log_not_found 是 Nginx 的一个指令,默认值为 on,表示当请求的文件(如图片、CSS、JS 等)不存在时,Nginx 会记录一条 error 级别的日志,例如:
这类日志对调试真实服务故障帮助很小,反而会淹没真正需要关注的错误(如权限问题、磁盘满、上游不可达等)。
在哪些位置关闭 log_not_found 更合理
不建议全局关闭,而应在处理静态资源的 location 块中精准控制:
- 针对
/static/、/assets/、/images/等明确存放静态文件的路径 - 匹配常见静态后缀(
.js、.css、.png、.ico等)的正则 location - 避免在 root 或 proxy_pass 主 location 中关闭,否则可能掩盖真实配置错误
典型配置示例
以下配置将禁止记录 favicon.ico、缺失 CSS/JS 文件等产生的 404 错误日志:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
log_not_found off; # 关键:关闭该 location 下的 404 日志
}
如果使用了别名或重写规则,确保 log_not_found off 写在最终文件查找逻辑生效的位置(如 alias 或 root 后面)。
配合其他优化更有效
- 用
try_files显式兜底(如try_files $uri =404),避免隐式 fallback 触发多余日志 - 对已知必然缺失的路径(如
/favicon.ico)单独定义 location 并返回空响应:return 204; - 结合日志级别调整(如把
error_log级别设为warn),进一步过滤低价值信息










