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_length HTTP请求信息里的Content-Length字段 234112
$content_type 请求信息里的Content-Type字段
$cookie_COOKIE 客户端请求中的COOKIE头域的值
$document_root 针对当前请求中的根路径设置值 /index.php
$document_uri 与$uri相同
$host 请求信息中的Host头域值,如果请求中没有Host行,则等于设置的服务器名 www.webloger.net
$http_HEADER HTTP请求信息里的HEADER字段
$http_host 与$host相同,但如果请求中没有Host行,则可能不用,请求地址,即浏览器中你输入的地址(IP或域名) www.youcl.com
192.168.100.100
$http_cookie 客户端的cookie信息
$http_referer url跳转来源 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
$status HTTP请求状态 200
$upstream_status upstream状态 200
$time_local 访问时间和时区 18/Jul/2012:17:00:01 +0800
$ssl_protocol SSL协议版本 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;
}
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏