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