当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪理解nginx配置中的多个if的匹配规则      配置文件:   代码如下: location ~ /bb { if ($args ~ "&_kw=[\w]+"){        access_log logs/kw;        access_log logs/all; } if ($args ~ "(&_pg=[\w]+|&_pc=[\w]+)"){       access_log logs/pg;       acc.........
    ▪根据条件分离nginx的access日志的方法      要求实现如下的日志记录: 当访问ck.php?abc时,将日志记录到abc.log中;当访问ck.php?edf时,将日志记录在edf.log中。其中abc与edf为访问ck.php时加的参数。 实现: 使用if语句判断参数是否以abc开.........
    ▪修改nginx访问日志的时间格式的方法      要求: 修改访问日志的时间格式,原格式为:03/Jun/2009:07:06:53 +0800 ,修改为:2009-06-03 07:06:53 第一个要修改的文件: nginx-0.7.59/src/core/ngx_times.c 1、(计算字符串的长度?) static u_char     .........

[1]理解nginx配置中的多个if的匹配规则
    来源: 互联网  发布时间: 2013-12-24

配置文件:
 

代码如下:
location ~ /bb {
if ($args ~ "&_kw=[\w]+"){
       access_log logs/kw;
       access_log logs/all;
}
if ($args ~ "(&_pg=[\w]+|&_pc=[\w]+)"){
      access_log logs/pg;
      access_log logs/all;
}
if ($args ~ "&_kw=[\w]+.*(&_pg=[\w]+|&_pc=[\w]+)"){
      access_log logs/kw;
      access_log logs/pg;
      access_log logs/all;
}
access_log logs/all;
}
 

http://1.1.1.1/bb?&_kw=1777&_pg=-1&_pc=1
对于上面的配置,访问上面的url时,即匹配第一个if(因为\w为[a-zA-Z0-9_],不包含“-”,又匹配最后一个if,后面的if生效。(匹配多个if的args,后面的if生效)
验证:
 

代码如下:
location ~ /bb {
   if ($args ~ "&_kw=[\w]+"){
       access_log logs/kw;
   }
   if ($args ~ "&_kw=[\w]+"){
       access_log logs/kw111;
   }
}
 

关于nginx location(不是多个if)的匹配规则,请参考:http://wiki.nginx.org/NginxHttpCoreModule#location


    
[2]根据条件分离nginx的access日志的方法
    来源: 互联网  发布时间: 2013-12-24

要求实现如下的日志记录:
当访问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

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


    
[3]修改nginx访问日志的时间格式的方法
    来源: 互联网  发布时间: 2013-12-24

要求:
修改访问日志的时间格式,原格式为:03/Jun/2009:07:06:53 +0800 ,修改为:2009-06-03 07:06:53

第一个要修改的文件:
nginx-0.7.59/src/core/ngx_times.c

1、(计算字符串的长度?)
static u_char            cached_http_log_time[NGX_TIME_SLOTS]
                                    [sizeof("28/Sep/1970:12:00:00 +0600")];
修改为
static u_char            cached_http_log_time[NGX_TIME_SLOTS]
                                    [sizeof("1970-09-28 12:00:00")];
2、(计算字符串的长度?)
ngx_cached_http_log_time.len = sizeof("28/Sep/1970:12:00:00 +0600") - 1;
修改为
ngx_cached_http_log_time.len = sizeof("1970-09-28 12:00:00") - 1;

3、(关键的地方,修改格式)
    p2 = &cached_http_log_time[slot][0];

    (void) ngx_sprintf()(p2, "%02d/%s/%d:%02d:%02d:%02d %c%02d%02d",
                       tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
                       tm.ngx_tm_year, tm.ngx_tm_hour,
                       tm.ngx_tm_min, tm.ngx_tm_sec,
修改为
p2 = &cached_http_log_time[slot][0];

    (void) ngx_sprintf(p2, "%4d-%02d-%02d %02d:%02d:%02d",
                       tm.ngx_tm_year, tm.ngx_tm_mon,
                       tm.ngx_tm_mday, tm.ngx_tm_hour,
                       tm.ngx_tm_min, tm.ngx_tm_sec,
注:这里其实将p2格式改成和p1格式基本上相同了,完全可以直接将log_time的格式改成p1,但是为了做个试验,还是手动修改了p2格式。

第二个要修改的文件:
nginx-0.7.59/src/http/modules/ngx_http_log_module.c

    { ngx_string("time_local"), sizeof("28/Sep/1970:12:00:00 +0600") - 1,
修改为
    { ngx_string("time_local"), sizeof("1970-09-28 12:00:00") - 1,

接下来,就是编译源文件,安装了。

您可能感兴趣的文章:
nginx 日志分析的实例学习
Nginx日志模块分析详解
Nginx关闭日志的方法
Nginx日志分析 Nginx日志切割与Awstats配置
nginx日志配置、Nginx日志分割
有关nginx日志格式的设计分享
nginx日志统计访问时间的例子
nginx日志配置文件的格式说明
nginx日志报大量400错误的解决方法
nginx关闭favicon.ico日志记录的方法
nginx与apache日志格式的区别
nginx日志中记录cookie的实现方法
Nginx日志中过滤关键字的写法
Nginx 日志分析实例


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
java开发知识 iis7站长之家
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3