首页 > 代码库 > 实战Nginx(2)-日志模块

实战Nginx(2)-日志模块

nginx有一个非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义。ngx_http_log_module是用来定义请求日志格式的。


一.日志记录配置详解

1. access_log指令

语法: access_log path [format [buffer=size [flush=time]]];
access_log path format gzip[=level] [buffer=size] [flush=time];
access_log syslog:server=address[,parameter=value] [format];
access_log off;
默认值: access_log logs/access.log combined;
配置段: http, server, location, if in location, limit_except

gzip压缩等级。

buffer设置内存缓存区大小。

flush保存在缓存区中的最长时间。

不记录日志:access_log off;

使用默认combined格式记录日志:access_log logs/access.log 或 access_log logs/access.log main;


2. log_format指令

语法: log_format name string …;
默认值: log_format main “…”;
配置段: http


name表示格式名称,string表示等义的格式。log_format有一个默认的无需设置的main日志格式,相当于apache的combined日志格式,如下所示:

log_format  main  ‘$remote_addr - $remote_user  [$time_local]  ‘
                  ‘ "$request"  $status  $body_bytes_sent  ‘
                  ‘ "$http_referer"  "$http_user_agent" ‘;



日志格式允许包含的变量注释如下:

$remote_addr, $http_x_forwarded_for #记录客户端IP地址
$remote_user  #记录客户端用户名称
$request   #记录请求的URL和HTTP协议
$status    #记录请求状态
$body_bytes_sent #发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
$bytes_sent #发送给客户端的总字节数。
$connection #连接的序列号。
$connection_requests #当前通过一个连接获得的请求数量。
$msec #日志写入时间。单位为秒,精度是毫秒。
$pipe #如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
$http_referer #记录从哪个页面链接访问过来的
$http_user_agent #记录客户端浏览器相关信息
$request_length #请求的长度(包括请求行,请求头和请求正文)。
$request_time #请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601 #ISO8601标准格式下的本地时间。
$time_local #通用日志格式下的本地时间。


二.配置http段的日志格式为apache风格的日志,在虚拟主机中调用;

  1. 编辑主配置文件,配置http段的默认日志格式:

[root@www ~]# vim /etc/nginx/nginx.conf
log_format  main  ‘$remote_addr - $remote_user  [$time_local]  ‘
                  ‘ "$request"  $status  $body_bytes_sent ‘
                  ‘ "$http_referer"  "$http_user_agent" ‘;


2.在虚拟主机中调用;

[root@www ~]# vim /etc/nginx/extra/nginx-vhost.conf 
server {
        listen       80;
        server_name www.stu31.com;
        index index.html index.htm index.php;
        root  /www/vhosts/www1;
        access_log  /var/log/nginx/www.stu31.com.log main ;
}


3.语法检查:

[root@www ~]# service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


4.重启nginx服务:

[root@www ~]# service nginx restart
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]


5.连接测试:

[root@www ~]# elinks -dump http://172.16.31.40
   172.16.31.40 www.stu31.com
[root@www ~]# elinks -dump http://www.stu31.com
   172.16.31.40 www.stu31.com


6.查看日志:

[root@www ~]# tail /var/log/nginx/www.stu31.com.log 
172.16.31.254 - - [27/Dec/2014:10:37:56 +0800] GET / HTTP/1.1304 0 - Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 -
127.0.0.1 - - [27/Dec/2014:10:40:17 +0800] GET / HTTP/1.1200 27 - ELinks/0.12pre5 (textmode; Linux; -) -
127.0.0.1 - - [27/Dec/2014:10:40:29 +0800] GET / HTTP/1.1200 27 - ELinks/0.12pre5 (textmode; Linux; -) -
172.16.31.254 - -  [27/Dec/2014:11:38:48 +0800]   "GET / HTTP/1.1"  304  0  "-"  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" 
172.16.31.254 - -  [27/Dec/2014:11:38:50 +0800]   "GET / HTTP/1.1"  304  0  "-"  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" 
172.16.31.254 - -  [27/Dec/2014:11:38:50 +0800]   "GET / HTTP/1.1"  304  0  "-"  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" 
172.16.31.254 - -  [27/Dec/2014:11:38:52 +0800]   "GET / HTTP/1.1"  304  0  "-"  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" 
172.16.31.254 - -  [27/Dec/2014:11:38:58 +0800]   "GET / HTTP/1.1"  200  27  "-"  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" 
172.16.31.40 - -  [27/Dec/2014:11:39:54 +0800]   "GET / HTTP/1.1"  200  27  "-"  "ELinks/0.12pre5 (textmode; Linux; -)" 
127.0.0.1 - -  [27/Dec/2014:11:40:00 +0800]   "GET / HTTP/1.1"  200  27  "-"  "ELinks/0.12pre5 (textmode; Linux; -)"







本文出自 “龙之守护” 博客,请务必保留此出处http://sohudrgon.blog.51cto.com/3088108/1596657

实战Nginx(2)-日志模块