1. 首页
  2. WEB服务
  3. Nginx

自定义nginx日志格式

nginx日志格式通过log_format命令来定义的。自定义格式的模块:ngx_http_log_module
示例:
log_format log ‘$remote_addr – $remote_user [$time_local] “$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘ ‘”$http_user_agent” $http_x_forwarded_for’; access_log /2016/08/nginx-access.log;
log_format指令:
语法 log_format name string …
默认值 combined “…”
使用字段 http
参数说明:
$remote_addr 和 $http_x_forwarded_for:记录客户端的ip地址。
$remote_user:记录客户端用户名称。
$time_local:记录访问时间与时区。
$request:记录请求的URL与HTTP协议。
$status:记录请求状态;成功是200。
$body_bytes_sent:记录发送给客户端文件主体内容大小。
$http_referer:记录从那个页面链接访问过来的。
$http_user_agent:记录客户端浏览器的相关信息。

access_log指令:
语法 access_log path [ format [ buffer = size ]]
access_log off
默认值 logs/access.log combined
使用字段 http
server
location
if in location
limit_except
记录的日志格式如下:
53.16.49.155 – – [12/Dec/2016:18:05:02 +0800] “GET /2016/08/nginx-access/ HTTP/1.1” 200 56328 “-” “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)”

如果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” ‘;

日志变量 解释 实例日志内容
$time_local 通用日志格式下的本地时间;(服务器时间)
$remote_addr, $http_x_forwarded_for 记录客户端IP地址
$remote_user 记录客户端用户名称
$request 记录请求的URL和HTTP协议,请求方式(GET或者POST等)
$status 请求状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容
$bytes_sent 发送给客户端的总字节数;
$request_length 请求的长度(包括请求行,请求头和请求正文)
$request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止
$upstream_addr 集群轮询地址;
$upstream_response_time 是指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间
$http_accept_language 用户浏览器语言
$http_user_agent用户浏览器其他信息,浏览器版本、浏览器类型等
$http_host 请求的url地址(目标url地址)的host
$http_referer 来源页面,即从哪个页面转到本页,专业名称叫做“referer”
$connection 连接的序列号;
$connection_requests 当前通过一个连接获得的请求数量
$time_iso8601 ISO8601标准格式下的本地时间
$msec 日志写入时间。单位为秒,精度是毫秒
$pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”
$uri 请求中的当前URI(不带请求参数,参数位于$args)
$request_uri 请求中的当前URI(带请求参数)
$request_filename 当前连接请求的文件路径,由root或alias指令与URI请求生成
$server_protocol |$scheme 请求使用的协议,通常是HTTP/1.0或HTTP/1.1
$geoip_country_code 用户地理位置代码(国家代码)安装国家地理代码库可用

原创文章,作者:赛福,如若转载,请注明出处:http://www.safecdn.cn/webserver/nginx/2016/08/nginx-access.html

联系我们

在线咨询:点击这里给我发消息