在 server 块中配置 location = /favicon.ico { log_not_found off; access_log off; } 可彻底屏蔽 favicon.ico 404 的 error_log 和 access_log 记录,避免日志冗余;同理可处理 /robots.txt 并返回 204。

直接在 Nginx 的 server 块中添加精准匹配的 location = /favicon.ico 配置,并启用 log_not_found off,就能让 Nginx 完全不记录该路径 404 的错误日志,同时建议配合 access_log off 一并关闭访问日志输出。
为什么需要 log_not_found off
log_not_found on|off 控制的是“文件未找到类错误”(如 404)是否写入 error_log。默认为 on,所以每次浏览器自动请求不存在的 /favicon.ico,Nginx 就会在 error.log 中记一条 "open() \".../favicon.ico\" failed (2: No such file or directory)"。这类日志量大、无业务价值,还会掩盖真正需要排查的错误。
正确配置写法
把以下代码块插入任意一个 server { ... } 内(位置不限,但必须在 server 级别):
location = /favicon.ico {
log_not_found off;
access_log off;
}
-
location = /favicon.ico是精确匹配,避免误伤其他以/favicon.ico开头的路径(比如/favicon.ico?v=1) -
log_not_found off关闭 error_log 中的“找不到文件”提示 -
access_log off同时屏蔽 access_log 中的 404 记录,防止日志膨胀和干扰检索
常见误区提醒
不要用 location /favicon.ico { ... }(缺少等号),那是前缀匹配,可能意外覆盖其他资源;也不要写成 error_log off——它不会关闭日志,而是新建一个叫 off 的日志文件;更不要试图删掉或禁用整个 error_log,那会丢失关键报错信息。
可选增强:顺便处理 robots.txt
同理,很多爬虫也会频繁请求 /robots.txt。若站点没提供,也可一并静默:
location = /robots.txt {
log_not_found off;
access_log off;
return 204;
}
-
return 204返回空响应,比 404 更轻量,且明确告知“无内容”,避免部分客户端重试 - 同样使用
=精确匹配,确保安全










