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;