log_format用来设置日志的记录格式:

log_format name format

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

log_format  combined  '$remote_addr - $remote_user  [$time_local]  '

                                   ' "$request"  $status  $body_bytes_sent  '

                                   ' "$http_referer"  "$http_user_agent" ';

如果nginx位于负载均衡器,squid,nginx反向代理之后,web服务器无法直接获取到客户端真实的IP地址了。  $remote_addr获取反向代理的IP地址。反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。如下所示:

log_format  porxy  '$http_x_forwarded_for - $remote_user  [$time_local]  '

                             ' "$request"  $status $body_bytes_sent '

                             ' "$http_referer"  "$http_user_agent" ';

参数注释如下:

$remote_addr, $http_x_forwarded_for记录客户端IP地址

$remote_user记录客户端用户名称

$time_local记录访问时间

$request记录请求的URL和HTTP协议

$status记录请求状态

$body_bytes_sent记录发送给客户端文件内容大小

$http_referer记录从哪个页面链接访问过来的

$http_user_agent记录客户端浏览器相关信息

access_log用来指定日志文件路径:

access_log  path  [format  [buffer=size | off]]

buffer设置内存缓存区大小。

不记录日志:

access_log off;

使用默认combined格式记录日志:

access_log  logs/access.log  或 access_log  logs/access.log combined;

使用自定义的日志格式:

access_log  logs/access.log  proxy  buffer=32k;

每个server_name对应一个日志文件:

access_log  logs/$server_name.log  combined;

日志文件含有变量,需注意一下问题:

buffer不会被使用

对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。可以使用open_log_file_cache来设置日志文件缓存(默认是off),格式如下:

open_log_file_cache  max=n [inactive=time] [min_uses=n] [valid=time] | off

参数注释如下:

max:设置缓存中的最大文件描述符数量,采用LRU算法

inactive:设置存活时间,默认是10s

min_uses:设置日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次

valid:设置检查频率,默认60s