nginx之日志格式

nginx的ngx_http_log_module模块是用来定义请求日志格式(编译时添加)

配置段: http

常用log_format指令:

$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
请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止
$upstream_response_time 
Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间

$time_iso8601 ISO8601标准格式下的本地时间
$time_local   
通用日志格式下的本地时间

上面提到了两个时间:upstream_response_time和request_time

下面介绍下2者的差别:

1、request_time

指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应数据时间。

2、upstream_response_time

是指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间。

所以$request_time肯定比$upstream_response_time值大,特别是使用POST方式传递参数时,因为Nginx会把request body缓存住,接受完毕后才会把数据一起发给后端。所以如果用户网络较差,或者传递数据较大时,$request_time会比$upstream_response_time大很多。

所以如果使用nginx的accesslog查看php程序中哪些接口比较慢的话,记得在log_format中加入$upstream_response_time。

时间: 2025-01-31 04:03:41

nginx之日志格式的相关文章

Nginx配置日志格式记录cookie

Nginx配置日志格式记录cookie1. 一般用来做UV统计,或者获取用户token等. 配置方式:  在nginx的配置文件中有个变量:$http_cookie来获取cookie的信息.配置方式很简单,只需要在nginx配置文件的http段,新添加一个log_format就可以了:http{log_format  hehe  '$remote_addr - $remote_user [$time_local] "$request" '               '$status

nginx基础日志格式

nginx基础日志格式log_format main '$remote_addr $remote_user [$time_local] "$request" $request_time''$status $body_bytes_sent "$http_referer" ''$http_user_agent $http_x_forwarded_for $request_time $upstream_response_time $upstream_addr $upstr

log_format为Nginx设置日志格式

nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式, 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件中日记配置(/usr/local/nginx/conf/nginx.conf). nginx的log_format有很多可选的参数用于指示服务器的活动状态,默认的是:log_format  access  '$remote_addr - $remote_user [$time_local] "$request

nginx自定义日志格式

nginx日志格式的设计 根据开发要求我们要在nginx的日志中打印一些特殊信息,所以必须自定义一些日志, #设置user_id的默认值 set $user_id "0"; #设置user_kind的默认值 set $user_kind "-"; #设置uuid的默认值 set $uuid "_"; www.2cto.com if ( $http_cookie ~* "user_id=([0-9]*)" ){ set $use

nginx访问日志格式

$time_iso8601 ISO8601标准格式下的本地时间.$time_local 通用日志格式下的本地时间. 我们在配置访问日志的时候,一般都是按照默认格式,但是我觉得$time_local换成$time_iso8601更直观一些. log_format  main  '$remote_addr - $remote_user $time_iso8601  "$request" '                     '$status $body_bytes_sent &quo

python   实现nginx/apache 日志格式的统计脚本

# !/usr/bin/env python # -*- coding:utf8 -*- import sys import re import time import os def main(): months ={ "jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6, "Jul": 07, &quo

logstash 过虑nginx访问日志

标题是不是可以翻译成这样:logstash Filters nginx access log 好了,进入正题,日志管理服务器我用ElasticSearch+LogStash+Kibana+Redis 先说下我的架构: 远程NGINX采集日志数据到REDIS+logstash+elasticsearch+kibana服务器 至于怎么部署,因本人之前用baidu博客写在那上面了,以后有时间把百度的搬过来 好了,这里就先不说部署了,我们直接进入配置正题 在nginx服务器,我们一.先配置nginx的日

Nginx访问日志 Nginx日志切割 静态文件不记录日志和过期时间

一.Nginx访问日志#vim /usr/local/nginx/conf/nginx.conf日志格式的名字combined_realip可以自定义,例如将它修改为aming,注意,这里定义为什么,后面引用的时候就定义为什么(nginx配置文件看见分号才是这一行结束)#vim /usr/local/nginx/conf/vhost/test.com.conf //增加如下一行#/usr/local/nginx/sbin/nginx -t#/usr/local/nginx/sbin/nginx

Nginx内置变量以及日志格式变量参数详解

Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如"/foo/bar.html". $d