log_not_found off 仅抑制 error.log 中“文件未找到”警告(如 favicon.ico),不改变 404 响应或 access_log 记录;推荐在 location = /favicon.ico 中精准配置并搭配 try_files =204 使用。

在 Nginx 中,log_not_found off 可以有效抑制因请求不存在资源(如 favicon.ico)而产生的 404 日志条目,从而避免错误日志快速膨胀。它不阻止 404 响应本身,只控制是否记录该事件到 error.log 或 access.log(取决于上下文),是运维中轻量、安全的日志优化手段。
作用范围与生效位置
该指令仅对 error_log 中的“文件未找到”类警告(如 open() "/path/favicon.ico" failed (2: No such file or directory))起作用,需放在以下任一作用域中才生效:
- http 块:全局关闭所有 location 的此类日志
- server 块:仅对该虚拟主机生效
-
location 块:最精准,推荐用于专门处理
/favicon.ico
推荐配置方式(精准控制)
比起全局关闭,更稳妥的做法是在匹配 favicon.ico 的 location 中单独设置,既减少日志,又不影响其他 404 问题的排查:
location = /favicon.ico {
log_not_found off;
# 可选:返回空响应或默认图标,避免浏览器反复重试
try_files /favicon.ico =204;
}
说明:
- location = /favicon.ico 是精确匹配,效率高;
- try_files /favicon.ico =204 表示若文件不存在,直接返回 204(无内容),比 404 更安静;
- 即使不提供真实图标,也能消除大量重复日志和客户端重试。
注意事项与常见误区
log_not_found 不影响 access_log 记录(即访问行为仍会写入 access 日志),也不改变 HTTP 状态码——浏览器依然收到 404 或你指定的状态码(如 204)。需注意:
- 它不能替代真正提供
favicon.ico;长期缺失可能影响书签显示或 SEO 微信号; - 不要在 root 目录或静态资源 location 中滥用,否则会隐藏真实的文件路径错误;
- 若已启用
access_log off,还需确认是否真有必要关 error 日志——多数情况下,只关 favicon 的 not_found 就够了。
验证是否生效
修改配置后重载 Nginx(nginx -s reload),然后手动请求 /favicon.ico:
- 检查
error.log是否不再新增对应路径的 “No such file” 提示; - 用
curl -I http://your-site/favicon.ico确认返回状态码符合预期(如 204 或 404); - 观察日志增长速率是否明显下降,尤其是高流量站点效果显著。










