Nginx日志配置


01.nginx的日志格式配置:

  • nginx使用log_format关键字定义日志格式,其格式为:
log_format 日志配置名 [secape=default|json]
  • nginx日志中的常用变量包括:
    • $uri,请求中的当前uri,其不包含主机名,不包含请求参数。
    • $host,请求中的主机名,不包含端口信息,按照如下顺序获取:
      • 请求行中的host。
      • 请求头中的Host头部。
      • 与一条请求匹配的server_name(nginx配置中)。
    • $agrs,http请求的参数。
    • $hostname,通过gethostname等系统命令返回的主机名。
    • $https,是否使用https链接。
    • $limit_rate,用于设置响应的速度限制。
    • $nginx_version,当前nginx服务器的版本。
    • $pid,工作进程的pid。
    • $remote_addr,客户端地址。
    • $remote_port,客户端端口。
    • $remote_user,用于http基础认证服务的用户名。
    • $request,客户端的请求地址。
    • $request_method,http的请求方法,通常为get或post。
    • $request_time,处理客户端请求使用的时间(秒)。
    • $request_time是从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
    • $scheme,http请求使用的web协议,值为http或https。
    • $server_addr,服务器端地址。
    • $server_name,服务器名称。
    • $server_port,服务器端口。
    • $server_protocol,服务器的http版本,通常为”HTTP/1.0”或”HTTP/1.1”。
    • $status,http的响应代码。
    • $time_iso8601,服务器时间的ISO 8610格式。
    • $cookie_NAME,客户端请求Header头中的cookie变量,前缀$cookie_加上cookie名称的变量,该变量的值即为cookie名称的值
    • $http_host ,请求地址,即浏览器中你输入的地址(IP或域名)。
    • $http_referer,url跳转来源,用来记录从那个页面链接访问过来的。
    • $http_user_agent,用户终端浏览器等信息。
    • $http_x_forwarded_for,如果有反向代理,则记录上一个服务器的ip地址,即真实的客户端ip地址。
  • log_format只能定义在http配置段中。
  • 日志格式名可以自定义,但需满足常用的命名规范。
  • nginx使用log_format定义日志格式的示例(json):
log_format main  
        '{"@timestamp":"$time_iso8601",'
        '"@source":"$server_addr",'
        '"hostname":"$hostname",'
        '"ip":"$http_x_forwarded_for",'
        '"client":"$remote_addr",'
        '"request_method":"$request_method",'
        '"scheme":"$scheme",'
        '"domain":"$server_name",'
        '"referer":"$http_referer",'
        '"request":"$request_uri",'
        '"args":"$args",'
        '"size":$body_bytes_sent,'
        '"status": $status,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamaddr":"$upstream_addr",'
        '"http_user_agent":"$http_user_agent",'
        '"https":"$https"'
        '}';


02.nginx的日志输出配置:

  • nginx使用access_log关键字定义日志输出,其格式为:
access_log path 日志格式名 gzip[=level] [buffer=size] [flush=time] [if=condition];
  • access_log可以定义在http、server及location配置段下。
  • 如不指定日志格式名,则默认为combined。
  • access_log常用选项包括:
    • access_log off,关闭日志,即不输出访问日志。
    • buffer=size,存放访问日志的缓冲区大小,默认为64K。
    • flush=time,缓冲区的日志刷到磁盘的时间
    • gzip[=level],表示压缩级别;1为最小压缩,9为最大压缩,默认为1。
    • if = condition,表示其他条件。
  • nginx使用access_log定义日志输出的示例:
server {
    listen 80;
    server_name nginx.test.com;
    error_log logs/nginx_test_error.log error;
    access_log logs/nginx_test_access.log main gzip flush=5m;

    location / {
        root html/main;
        index index.html index.htm index.php;
    }

    location /status {
        stub_status on;
    }
}
文档更新时间: 2020-03-10 19:20   作者:闻骏