nginx Access日志格式「建议收藏」

nginx Access日志格式「建议收藏」默认,access日志路径是./logs/access.log,默认的日志格式为combined格式;使用log_format指令可以自定义日志格式;语法log_formatname[escape=default|json|none]string…;escape参数(1.11.8)设置变量的字符转义,json或default风格;默认使用default风格;none关闭转义…

大家好,又见面了,我是你们的朋友全栈君。

默认,access日志路径是./logs/access.log, 默认的日志格式为combined格式;
使用log_format指令可以自定义日志格式;

语法

log_format name [escape=default|json|none] string ...;

escape参数(1.11.8)设置变量的字符转义,json或default风格;默认使用default风格;none关闭转义;

示例,自定义compression日志格式,并使用

http {
    log_format compression '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    server {
        gzip on;
        access_log /spool/logs/nginx-access.log compression;
        ...
    }
}

默认的combined格式为

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

默认格式示例

192.168.1.186 - - [06/Aug/2018:09:57:51 +0800] "GET /Public/Css/plugins/morris/morris-0.4.3.min.css HTTP/1.1" 200 442 "http://www.example.com/index.php/Login/index.html" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"

常用变量

变量名 说明
$bytes_sent 发送给客户端的字节数
$connection 连接序列号
$connection_requests 当前通过连接发出的请求数
$msec 秒.毫秒;日志写入时间
$pipe 如果请求是管道线,则为”p”,否则为”.”
$request_length 请求长度(包括请求行,请求头和请求体)
$request_time 秒.毫秒;请求处理时长;从客户端读取第1个字节开始(请求),到最后1个字节发送给客户端为止(响应)
$status 响应状态码
$time_iso8601 ISO 8601标准格式的本地时间,如”2018-08-06T09:57:51+08:00″
$time_local 通用日志格式的本地时间,如”06/Aug/2018:09:57:51 +0800″

发送给客户端的变量,会有前辍”sent_http_”,如”$sent_http_content_range”

每个模块有内置变量可用于记录日志

http_core模块

变量名 说明
$arg_name name为请求行里的参数名
$args 请求行里的参数
$binary_remote_addr
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$bytes_sent 发送给客户端的字节数
$connection 连接序列号
$connection_requests 当前通过连接发出的请求数
$content_length 请求头字段”Content-Length”
$content_type 请求头字段”Content-Type”
$cookie_name name为某个cookie的名字
$document_root
$document_uri 同$uri
$host 请求行里的host name或请求头字段”Host”或响应请求的服务器名
$hostname 主机名
$http_name name为请求头字段名小写;如user_agent,cookie等
$https
$is_args
$limit_rate
$msec 秒.毫秒;日志写入时间
$nginx_version nginx的版本
$pid 工作进程的pid
$pipe 如果请求是管道线,则为”p”,否则为”.”
$proxy_protocol_addr
$proxy_protocol_port
$query_string 同$args
$realpath_root
$remote_addr 客户端请求IP
$remote_port 客户端请求端口
$remote_user 客户端用户名称,要启用用户认证才会有值
$request 完整的原始请求行,如 “GET / HTTP/1.1”
$request_body 请求体
$request_body_file
$request_completion
$request_filename
$request_id
$request_length 请求长度(包括请求行,请求头和请求体)
$request_method 请求方法,如”GET”,“POST”
$request_time 秒.毫秒;请求处理时长;从客户端读取第1个字节开始(请求),到最后1个字节发送给客户端为止(响应)
$request_uri 完整的请求地址,如 “https://example.com/”
$scheme 请求模式,如”http”或”https”
$sent_http_name name为响应头字段名小写;
$sent_trailer_name
$server_addr 接受请求的服务器地址
$server_name 接受请求的服务器名
$server_port 接受请求的服务器端口
$server_protocol 请求协议,如”HTTP/1.0″
$status 响应状态码
$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space
$time_iso8601 ISO 8601标准格式的本地时间,如”2018-08-06T09:57:51+08:00″
$time_local 通用日志格式的本地时间,如”06/Aug/2018:09:57:51 +0800″
$uri 当前请求的URI;当内部转跳时,值会变

$http_name一般为

变量名 说明
$http_user_agent 请求头字段”User-Agent”;发出请求的设备
$http_referer 请求头字段”Referer”;发出请求时所在的链接

$sent_http_name一般为

变量名 说明
$sent_http_content_length 响应头的”Content-Length”;响应内容的长度

其他模块,参考官方文档;

参考:
https://nginx.org/en/docs/http/ngx_http_core_module.html#variables

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132719.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • goland的破解激活码都提示非法破解方法「建议收藏」

    goland的破解激活码都提示非法破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    64
  • PHP如何输出合并单元格的表

    PHP如何输出合并单元格的表

    2021年10月28日
    51
  • 新东方俞敏洪培训心得_西安新东方寒假班

    新东方俞敏洪培训心得_西安新东方寒假班 俞敏洪:选择改变生命  非常感谢同学们选择新东方的课堂,谢谢大家!  大家从全国各地来到新东方,只说明了一件事情,就是希望自己的前途更加灿烂。其实我们人生可以选择的机会不是太多,尽管我们常常发现前面有很多路,但是,选择就在关键的几个点上。选择,改变了我们的生命。  我们的生命基本在做两件事情,第一件事情,就是不断的积累,从上小学1+1=2开始,到上高…

    2025年9月5日
    3
  • vim的复制粘贴命令_linux vim全选复制

    vim的复制粘贴命令_linux vim全选复制一、最基本的复制粘贴1.将光标移动到要复制的文本开始的地方,按v进入可视模式。2.将光标移动到要复制的文本的结束的地方,按y复制。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式。3.移动光标到文本结束的地方,按p粘贴。…

    2022年9月2日
    7
  • pytest怎么安装_pytest安装

    pytest怎么安装_pytest安装pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月30日
    18
  • 适配器的作用[通俗易懂]

    适配器的作用[通俗易懂]首先我们从一般的概念上讨论一下计算机是怎样连接到局域网上的。计算机与外界局域网的连接是通过通信适配器(adapter)。适配器本来是在主机箱内插入的一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡)。这种接口板又称为网络接口NIC(NetworkInterfaceCard)或简称为“网卡”。由于较新的计算机主板上已经嵌入了这种适配器,不使用单独的网卡了,因此…

    2022年6月12日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号