nginx 中禁用 css, js,图片等静态资源的日志记录

更新日期: 2020-11-21 阅读次数: 356 字数: 229 分类: Nginx

对于网站的 nginx 日志,三分之二以上是 css js 及图片等静态文件的访问日志。

禁用静态文件日志的好处

  • 提升 IO 性能,避免无意义的写入磁盘操作
  • 便于实时查看 nginx 日志

禁用方法

修改全局 nginx.conf 文件

log_format compression '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';

map $request_uri $loggable {
    default                                             1;
    ~*\.(ico|css|js|gif|jpg|jpeg|png|svg|woff|ttf|eot)$ 0;
}

access_log /var/log/nginx/access.log compression if=$loggable;

这样即可过滤掉 css js 及图片等静态资源文件的日志。

但是,这种写法有一个问题,无法过滤带时间戳的资源文件格式,例如:

index.css?t=20201121

解决方案是将 request_uri 修改成 uri 即可。所以,最终的版本是:

log_format compression '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';

map $request_uri $loggable {
    default                                             1;
    ~*\.(ico|css|js|gif|jpg|jpeg|png|svg|woff|ttf|eot)$ 0;
}

access_log /var/log/nginx/access.log compression if=$loggable;

参考

https://serverfault.com/questions/875198/preventing-the-nginx-access-log-from-filling-up-with-static-requests/875352

爱评论不评论