(图)配置nginx不记录php文件日志(过滤php日志)

发布时间:2019-10-04编辑:脚本学堂
配置nginx不记录php文件日志(过滤php日志)

    今天收到同事的一个需求,在web生成的统计日志中不要记录action.php、soft.php、new.php,logo.jpg这三个php文件和logo文件的日志,降低统计时候读取日志消耗的性能,本来以后直接加个location 就可以搞定,后来发现并不是这么简单;

错误配置:
<a href=http://www.jb200.com/nginx/ target=_blank class=infotextkey>nginx</a>_logs_1

    这样的配置,发现只有访问logo.jpg的日志被记录到data.log.no的日志中,*.php的日志依然被记录到data.log日志中。
    理解:因为在加进去的规则前面有个localtion ~ .*.php?$ 所以php文件一进来就被这个location规则给匹配了,并没有经过我们后来定义的那个规则里面,所以日志还是记录在data.log里面。而logo.jpg则匹配后来的规则,所以被记录。

于是,把规则提到最前面,让他优先匹配(错误配置
nginx_logs_2

日志是被记录了,可是php文件 不能访问,直接会提示下载,这样的配置php没有发送给后端的php-cgi处理,把php的处理也加进去试试。

解决方法(注意location的顺序):
nginx_logs_3
 
重启nginx,日志记录分开了。

作者:李坤山
博客链接:http://blog.163.com/a12333a_li/