根据条件分离nginx的access日志的方法

发布时间:2019-07-29编辑:脚本学堂
要求实现如下的日志记录:当访问ck.php?abc时,将日志记录到abc.log中;当访问ck.php?edf时,将日志记录在edf.log中。其中abc与edf为访问ck.php时加的参数。

要求实现如下的日志记录:
当访问ck.php?abc时,将日志记录到abc.log中;当访问ck.php?edf时,将日志记录在edf.log中。其中abc与edf为访问ck.php时加的参数。

实现:
使用if语句判断参数是否以abc开头,然后进行日志的分别存储。

修改nginx.conf,添加:
 

复制代码 代码如下:
location /ck.php {
#如果作为反向代理,一定要把proxy写上,否则不会反向代理该文件
    if ($args ~ ^abc){
       access_log /usr/local/nginx/logs/abc.log;
    }
    if ($args ~ ^edf){
       access_log /usr/local/nginx/logs/edf.log;
    }
}
 

其中:
$args
This variable is equal to arguments in the line of request;

更多的参数,查看nginx的文档中的NginxHttpCoreModule,里的Variables部分。
http://wiki.nginx.org/NginxHttpCoreModule

大家可以根据自己的需要,结合适当的变量来分离出需要的日志。