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)
上一篇 2022年6月10日 下午12:16
下一篇 2022年6月10日 下午12:36


相关推荐

  • mysql中使用show table status 查看表信息

    mysql中使用show table status 查看表信息

    2021年9月18日
    61
  • item buffer_addlistener

    item buffer_addlistener当创建DataGrid控件中的项时(不论是在往返行程中还是在将数据绑定到控件时),都会引发ItemCreated事件。ItemCreated事件通常用于控制DataGrid控件中行的内容和外观。当项被数据绑定到DataGrid控件后,将引发ItemDataBound事件。此事件为您提供了在客户端显示数据项之前访问该数据项的最后机会。当引发此事件后,该数据项将被设为空,并且不再

    2022年10月13日
    4
  • PyCharm安装库numpy失败的解决方法

    PyCharm安装库numpy失败的解决方法事情是这样的,博主初学python和机器学习,在跑一个代码的时候被提示出现以下错误:(能被提示出现这个错误,可见确实是初学了!)图1:跑代码时候的报错注:图1是安装好了numpy后出现的第二个错误,错误本质是一样的,都是缺少某个库百度查资料后得知在PyCharm中有一个安装库的方法是:Settings>>PythonInterpreter>>点击图2中红色圈起来的加号,出现图3图2:安装库的一个方法图3:点击图2的加号后出现的界面顺利的话,只

    2022年8月25日
    19
  • cstring头文件都有什么函数_C语言头文件正确写法

    cstring头文件都有什么函数_C语言头文件正确写法首先,必须要清楚CString是怎么写的,是头两个字母大写!切记,不然就不能用!其次,CString是string的升级版,有很多好用的功能,使用CString一般需要包含头文件atlstr.h,在MFC程序中,可能不用包含,因为CString是MFC的基础功能。

    2025年11月4日
    5
  • C++——string字符串类具体用法

    C++——string字符串类具体用法引言:C++ 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。string 是 C++ 中常用的一个类,它非常重要,我们有必要在此单独讲解一下。定义使用 string 类需要包含头文件,下面的例子介绍了几种定义 string 变量(对象)的方法:#include…

    2022年8月18日
    29
  • 单臂路由实现原理

    单臂路由实现原理一 概述单臂路由 router on a stick 是指在路由器的一个接口上通过配置子接口 或 逻辑接口 并不存在真正物理接口 的方式 实现原来相互隔离的不同 VLAN 虚拟局域网 之间的互联互通 单臂路由的子接口路由器的物理接口可以被划分成多个逻辑接口 这些被划分后的逻辑接口被形象的称为子接口 值得注意的是这些逻辑子接口不能被单独的开启或关闭 也就是说 当物理接口被开启或关闭时 所有的该接口的子接口也随之被开启或关闭 优缺点 VLAN 能有效分割局域网 实现各网络区域之间的访问控制 但现实中 往往

    2026年3月19日
    3

发表回复

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

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