📜  nginx 不记录 404 (1)

📅  最后修改于: 2023-12-03 14:44:35.713000             🧑  作者: Mango

Nginx不记录404日志

Nginx作为一款高性能、轻量级的Web服务器,广泛应用于各种场景中。在应用Nginx过程中,我们可能会遇到一些场景,需要对404错误进行统计,并进行日志记录。但有时候我们并不需要记录404错误,尤其是在一些高访问量的站点上,记录大量的404错误会占据大量的磁盘空间和IO资源,这时候就需要关闭Nginx的404日志记录。

关闭Nginx 404日志记录的原理

默认情况下,Nginx会将所有的请求日志记录到access.log文件中,包括404错误。如果我们要关闭Nginx的404日志记录,需要修改Nginx的配置文件nginx.conf,设置访问日志的格式,将所有的404请求过滤掉。具体的设置方法如下所示:

# 修改nginx.conf,添加以下配置
http {
    log_format access_log '$remote_addr - $remote_user [$time_local] '
                          '"$request" $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent"';

    server {
        # 启用access日志
        access_log /var/log/nginx/access.log access_log;

        # 设置日志格式为access_log
        access_log /var/log/nginx/access.log access_log if=$not_found;
    }
}

以上配置中,$not_fount表示请求路径不存在的情况,当请求路径不存在的时候,Nginx会将404错误请求过滤掉,不会记录到access.log中。

验证Nginx 404日志记录是否已关闭

修改Nginx配置文件后,我们可以通过curl命令进行验证。例如,我们访问一个不存在的URL,然后使用cat命令查看access.log文件:

curl http://localhost/404
cat /var/log/nginx/access.log

如果Nginx已经关闭了404记录,则在access.log文件中不会记录该请求的日志。

总结

关闭Nginx的404日志记录对于一些高访问量的站点来说,可以提升服务器的性能和稳定性,减少磁盘IO压力和磁盘空间的占用。但需要注意的是,对于一些较小的站点,或者需要进行SEO优化的站点来说,404日志记录是非常重要的,并且也可以透过日志统计找到一些问题或者hack行为,因此需要视情况进行开启或关闭。