Nginx服务器使用log_format为设置更详细的日志格式

Nginx服务器使用log_format为设置更详细的日志格式

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" '
    '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';

想要记录更详细的信息需要自己设置log_format,具体可设置的参数格式及说明如下:

Nginx内置变量大全

参数说明示例
$arg_PARAMENTER客户端GET请求PARAMENTER字段的值
$args客户端请求中的参数
$binary_remote_addr远程地址的二进制表示
$body_bytes_sent
已发送的消息体字节数大小30023
$content_lengthHTTP请求信息里的Content-Length字段234112
$content_type请求信息里的Content-Type字段
$cookie_COOKIE客户端请求中的COOKIE头域的值
$document_root针对当前请求中的根路径设置值/index.php
$document_uri与$uri相同
$host请求信息中的Host头域值,如果请求中没有Host行,则等于设置的服务器名www.webloger.net
$http_HEADERHTTP请求信息里的HEADER字段
$http_host与$host相同,但如果请求中没有Host行,则可能不用,请求地址,即浏览器中你输入的地址(IP或域名)www.ibloger.net
192.168.100.100
$http_cookie客户端的cookie信息
$http_refererurl跳转来源https://www.baidu.com/
$http_user_agent用户终端浏览器等信息"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;
$http_via最后一个访问服务器IP的地址
$http_x_forwarded_for相当于网络访问路径
$is_args
如果$args有值,则等于“?”;否则等于空
$limit_rate对连接速率的限制
$nginx_version当前Nginx服务器的版本
$pid当前Nginx服务器主进程的进程ID
$query_string与$args相同
$remote_addr客户端IP地址211.28.65.253
$remote_port客户端端口号80
$remote_user客户端用户名称,用户Auth Basic Module验证
$request请求的URI和HTTP协议"GET /article-10000.html HTTP/1.1"
$request_body
客户端请求的报文体
$request_body_file发往后端服务器的本地临时缓存文件的名称
$request_filename当前请求的文件路径名,由root或alias指令与URI请求生成
$request_method请求的方法,比如GET/POST等GET
$request_uri请求的URI,带参数,不包含主机名/favicon.ico
$request_time整个请求的总时间0.205
$scheme所有的协议,如http或者https,比如:rewrite  ^(.+)$$cheme://mysite.name$1  redirect;http
$send_http_cache_control

$send_http_connection

$send_http_content_length


$send_http_content_type

$send_http_keep_alive

$send_http_last_modified


$send_http_location

$send_http_transfer_encoding

$sever_addr
服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(这样会造成资源浪费)$server_name请求达到的服务器名
$server_port请求达到的服务器端口号
$server_protocol请求的协议版本,HTTP/1.0或者HTTP/1.1,目前基本都是1.1了HTTP/1.1
$statusHTTP请求状态200
$upstream_statusupstream状态200
$time_local访问时间和时区18/Jul/2012:17:00:01 +0800
$ssl_protocolSSL协议版本TLSv1
$ssl_cipher交换数据中的算法RC4-SHA
$upstream_addr后台upstream的地址,即真正提供服务的主机地址10.10.10.100:80
$upstream_response_time请求过程中,upstream响应时间0.002
$uri经过重定向之类的

 

举例说明如下:

1、配置文件

#vim /usr/local/nginx/conf/nginx.conf

log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" $http_x_forwarded_for '
        '"$upstream_addr" "$upstream_status" "$upstream_response_time" "$request_time"';

include /usr/local/nginx/conf/vhost/*.conf;

2、vhost中配置文件

#vim /usr/local/nginx/conf/vhost/web.conf

server {
  listen 80 default;
  server_name www.it300.com;
  index index.html index.htm index.php;
  root /data/httpd/it300.com;
  
  location ~ .*\.php?$ {
    include fastcgi.conf;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    expires 30d;
  }
  location ~ .*\.(js|css)?$ {
    expires 1h;
  }
  access_log /data/logs/it300.com.log access;
}


未经允许请勿转载:程序喵 » Nginx服务器使用log_format为设置更详细的日志格式

点  赞 (0) 打  赏
分享到: