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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • .net 常用开源框架

    .net 常用开源框架Json.NETCodePlexArchiveJson.Net是一个读写Json效率比较高的.Net框架.Json.Net使得在.Net环境下使用Json更加简单。通过LinqToJSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换。Math.NETMath.NETMath.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开.

  • 升级openssl1.1.1(mix2s哪个版本不断流)

    发现很多OpenSSL的安全漏洞,并且是高危漏洞,所以准备升级CentOS6上的OpenSSL安装,解决安全漏洞;上OpenSSL的官网https://www.openssl.org/,查看一下最新的版本确认一下CentOS默认安装的OpenSSL的版本CentOS6使用的是1.0.1的版本,需要升级到最新的1.0.2s版本CentOS7使用的是1.0.2k版本,可以选…

  • 华为ensp安装步骤_网购200多的平板电脑靠谱吗

    华为ensp安装步骤_网购200多的平板电脑靠谱吗华为ENSP安装教程有需要的请点击这个连接下载自行下载:https://pan.baidu.com/s/1ORprW88r5RBKfHFmEzimow?pwd=0118提取码:0118下载好了可以看到以下这四个程序:软件安装顺序:WinPcap、Wireshark、VirtualBox、eNSP前三个建议均采用默认安装路径安装特别提示:不准出现中文路径,如果可以四个都默认安装路径的话,那最好!注………..

    2022年10月15日
  • 相机技术–摄像头传感器的感光区尺寸规格

    相机技术–摄像头传感器的感光区尺寸规格摄像头传感器的尺寸,一般主要是指对角线的尺寸,先上图,这个东西现在已经完全是历史遗留产物,据说这个尺寸的术语来自古老的Vidicon真空管(vacuumtubes)图像传送传感器;名称与具体尺寸关系其实不是很密切,大部分都维护了4:3(Horizontal:Vertical)宽高比。参考:ImagingElectronics101:UnderstandingCameraSensorsforMachineVisionApplications…

  • 如何解决vscode感叹号无法建立html文件的问题

    如何解决vscode感叹号无法建立html文件的问题今天是我使用vscode的第二天,没想到昨天还能用感叹号(!)建立文件模板的vscode今天却不行了,而且中途也重装过一次。虽然重装后能用感叹号(!)弄一个模板出来,但是在此新建文件的时候就没用了。所以我一直在思索为什么会这样,最终功夫不负有心人还是给我找到了。在此,谢谢那位给我指名方向的大佬。正确方法是输入html:5,然后回车就能出现模板了。因为vscode升级了,所以关于模板的设定可能出现了一些变化吧。在这里恳求大家了,如果各位读者觉得好用的话就动动小手点赞吧。拜托了。…

  • mysql面试50题_面试三道题思考几分钟

    mysql面试50题_面试三道题思考几分钟一、基础笔试命令考察要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位1.开启MySQL服务2.检测端口是否运行3.为MySQL设置密码或者修改密码4.登陆MySQL数据库5.查看当前数据库的字符集6.查看当前数据库版本7.查看当前登录的用户8.创建GBK字符集的数据库oldboy,并查看已建库完整语句9.创建用户oldboy,使…

发表回复

您的电子邮箱地址不会被公开。

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