从nginx 1.7版本开始,access_log日志文件中支持if语句判断。根据这个功能,我们可以根据status值分割nginx日志,正常200的访问记录放一个文件,404或者500等再放另外一个文件。对于后续分析nginx日志可能有用。
语法:
access_log path [format [buffer=size [flush=time]] [if=condition]];the if parameter (1.7.0) enables conditional logging.a request will not be logged if the condition evaluates to “0” or an empty string值是0时,access_log就不会记录日志。具体配置方法如下。
在nginx.conf代码块中添加如下内容:
map $status $normal { ~^2 1; default 0; } map $status $abnormal { ~^2 0; default 1; } map $remote_addr $islocal { ~^127 1; default 0; }这个配置的意思大概是status值2开头的都正常,其他都是不正常访问。如果remote_addr是127,那么说明是本地内部调用。
定义好判断值后,在具体server代码块中添加类似如下:
server { access_log logs/access.log combined if=$normal; access_log logs/access_abnormal.log combined if=$abnormal; access_log logs/access_local.log combined if=$islocal; }添加后reload重新载入nginx,可以看到nginx日志已经根据status返回值正常分割。
如果nginx版本不对,请先升级nginx,具体升级方法可以参考这篇文章。
190758dooo0qcukzka3ffn
百度云服务器如何配置文件腾讯云服务器购买域名阿里云购买服务器要实名吗云服务器怎么查看ip解析到主机解析不了不生效附件商家显示-其他问题SEO最需要了解的要素之一:域名photoshop有效序列号是什么 2020年最新photoshop有效序列号