一.静态文件不记录日志和过期时间(添加缓存时间)
编辑web虚拟文件在***.conf的server配置项中加入
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d; #过期/缓存时间为7天
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h; #过期、缓存时间为12小时
access_log off;
}
二.特殊需求不记录日志的方法(需要安装第三方模块)
以下方法适用于编译安装的nginx,如yum安装的nginx请重新编译安装,方法请见
ngx_log_if模块
ngx_log_if模块是一个nginx的第三方模块,这个模块能很好的实现日志过滤功能。
1.下载 ngx_log_if 模块
cd /root/download
wget https://github.com/cfsego/ngx_log_if/archive/master.zip
unzip master.zip
nginx添加第三方模块
1、查看ngixn版本极其编译参数
/usr/local/nginx/sbin/nginx -V
2、进入nginx源码目录
cd nginx-1..
3、以下是重新编译的代码和模块
./configure --user=www --group=www --prefix=/usr/local/nginx --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=/root/download/ngx_log_if-master
make 千万别make install,否则就覆盖安装了
make完之后在objs目录下就多了个nginx,这个就是新版本的程序了
4、备份旧的nginx程序
mv /usr/sbin/nginx /usr/sbin/nginx.2019
cp -r /etc/nginx /etc/nginx.2019
5、把新的nginx程序覆盖旧的
#先验证
objs/nginx -t
objs/nginx -V
#成功后替换并重启
cp objs/nginx /usr/sbin/
systemctl stop nginx.service
systemctl start nginx.service
ngx_log_if常用例子
server {
# 不记录204响应状态的access日志
access_log_bypass_if ($status = 204);
# 不记录200响应状态且uri为 status.nginx 的访问日志
access_log_bypass_if ($uri = 'status.nginx') and;
access_log_bypass_if ($status = 200);
# 不记录HEAD请求的日志
access_log_bypass_if ($request = 'HEAD');
}