一:log_format

  - 概述

    - log_format 用于管理 Nginx 的详细信息,日志管理等信息,很多都是基于这个来实现。

  - 可配置参数

    • $remote_addr           客户端地址
      $remote_user         客户端用户名称
      $time_local         访问时间和时区
      $request           请求的URI和HTTP协议$http_host请求地址,即浏览器中你输入的地址(IP或域名)
      $statusHTTP         请求状态
      $upstream_statusupstream   状态
      $body_bytes_sent       发送给客户端文件内容大小
      $http_refererurl       跳转来源
      $http_user_agent         用户终端浏览器等信息
      $ssl_protocolSSL        协议版本
      $ssl_cipher           交换数据中的算法
      $upstream_addr          后台upstream的地址,即真正提供服务的主机地址
      $request_time          整个请求的总时间
      $upstream_response_time    请求过程中,upstream响应时间

二:核心模块内置变量

  - 概述

    - 变量贯穿整个 Nginx 请求过程,我们可以拿到我们需要的信息

  - 变量

    • $uri:当前请求的uri,不带参数
      
      $request_uri:请求的uri,带完整参数
      
      $request:请求报文中的请求行
      
      $host:http请求报文中host首部,如果请求报文中没有host首部则以处理此请求的主机的主机名代替
      
      $hostname:nginx服务运行所在主机的主机名
      
      $remote_addr:客户端IP
      
      $remote_port: 客户端port
      
      $remote_user:使用用户认证时客户端用户输入的用户名
      
      $request_filename:用户请求报文中的URI经过本地root或alias转换后映射的本地的文件路径
      
      $request_method:请求方法
      
      $server_addr:服务器地址
      
      $server_name: 服务器名称
      
      $server_port:服务器端口
      
      $server_protocol:服务器向客户端发送响应时的协议版本,如http/1.1,http/1.0
      
      $scheme:在请求报文中使用的scheme,映射协议本身的协议如http或https
      
      $status:响应状态码
      
      $http_HEADER:匹配请求报文中指定的HEADER,$http_host匹配请求报文中的host首部,
      就是通用的咯,例如:$http_content_type匹配请求报文中的content-type首部 $sent_http_HEADER:匹配响应报文中指定的HERDER, $document_root:当前请求映射到的root配置

--

感谢今天Boos招聘上HR的宽容......

发错简历这种事以后不会在干了,哈哈

--

配置nginx的日志详细内容,都知道日志是很重要的东西,也是可以后去我们重要信息的地方。

之前我的一篇文章中学习了 nginx 的默认 log_format的作用。可以看下文。

--

但是我发现后来我还需要其他参数,于是在回来仔细学习 log_format 这个配置项。

假如我想检测一个API的响应时间,从入口文件打断点也是以一种办法,但是我们为什么不用 nginx 日志自带的一些配置来解决这个问题呢?

这里的问题就衍生了关于 nginx 的 log_format 的学习。

--

这里先列出默认的 log_format 的配置

--

具体的字段说明

说明
$remote_addr          客户端地址
$remote_user         客户端用户名称
$time_local         访问时间和时区
$request           请求的URI和HTTP协议$http_host请求地址,即浏览器中你输入的地址(IP或域名)
$statusHTTP         请求状态
$upstream_statusupstream   状态
$body_bytes_sent       发送给客户端文件内容大小
$http_refererurl       跳转来源
$http_user_agent         用户终端浏览器等信息
$ssl_protocolSSL        协议版本
$ssl_cipher           交换数据中的算法
$upstream_addr          后台upstream的地址,即真正提供服务的主机地址
$request_time          整个请求的总时间
$upstream_response_time    请求过程中,upstream响应时间

--

这里我想要的可能只是 $request_time 和 $upstream_responser_time 这两个参数,这里我们把它配在我的 log_format 的里面

log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_response_time"';

--

重启我的 nginx server 服务

之前的 log

192.168.37.1 - - [08/Apr/2018:09:44:19 +0800] "GET /favicon.ico HTTP/1.1" 200 330 "http://192.168.37.37/"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"

--

配置后的请求

192.168.37.1 - - [08/Apr/2018:09:45:12 +0800] GET /favicon.ico HTTP/1.1 "200" 330 "http://192.168.37.37/"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" "-" "0.000" "0.000"

--

已经成功记录上了我们需要的时间信息,其他的参数也是这样,在需要的时候进行配置。

--

目前的话只使用到了这两个配置,之后再学习或者工作中在遇到的话在回来补充。

《Nginx - 变量》- log_format/核心变量的更多相关文章

  1. 【转】nginx的模块变量(HTTP核心模块变量)

    nginx的HTTP核心模块引入了大量的变量,可以在指定范围内使用这些变量的值,可以分为三类:一是客户请求头中发送的变量.二是服务器端响应头中的变量,第三是nginx产生的各种变量,我们可以使用$变量 ...

  2. Nginx基础篇(2)- Nginx基本配置文件和变量详解

    Nginx基本配置文件和变量详解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. ...

  3. nginx常用内置变量

    $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...

  4. SHELL (2) —— Shell变量的核心基础知识和实践

    摘自:Oldboy Linux运维——SHELL编程实战 Shell变量:用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其它的内容. ...

  5. Nginx入门--从核心配置与动静分离开始

    写在前面 优化我们项目,服务器部署,不仅仅可以是分布式,Nginx一样可以通过动静分离,负载均衡来减轻我们服务器的压力.Nginx的知识链,学习周期相对比较长,博主也是刚刚入门,这篇就先从实现基础的动 ...

  6. nginx 日志log_format格式

    官方文档: http://nginx.org/en/docs/http/ngx_http_log_module.html The ngx_http_log_module module writes r ...

  7. SpringCloud、Nginx高并发核心编程 【2020年11月新书 】

    文章太长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典极品 : 三大本< Java 高并发 三部曲 > 面试 + 大厂 + 涨薪必备 疯狂创客圈 经 ...

  8. 深入理解PHP内核(五)变量及数据类型-变量的结构和类型

    原文链接:http://www.orlion.ga/238/ 编程语言的类型可以分为强类型和弱类型两种,PHP是弱类型语言,但是C语言是强类型语言.在官网PHP实现内部,所有变量使用同一种数据结构(z ...

  9. Shell变量之自定义变量、环境变量

    1:环境变量        环境变量可以帮我们达到很多功能-包括家目录的变换啊.提示字符的显示啊.运行文件搜寻的路径啊等等的那么,既然环境变量有那么多的功能,问一下,目前我的 shell 环境中, 有 ...

随机推荐

  1. java命令启动jar包

    本人对这些命令也是一知半解,记录备用. 1. 使用java命令行执行java文件 # 设置命令窗口标题 title test1 # 开启输出 @echo on # 设置环境变量JAVA_HOME se ...

  2. COM组件没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

    1.解决办法:在项目属性里设置“生成”=>“目标平台”为x86而不是默认的ANY CPU:

  3. pyhton验证码识别

    1.PIL 下载地址: PIL-1.1.7.win-amd64-py2.7.exe 2.tesseract-ocr下载地址: tesseract-ocr-setup-3.02.02.exe 3.pyt ...

  4. mysql5.7 服务无法启动的问题解决方法

    解决办法: 1.把MySQL文件低下的data文件删掉,如果没有的话,就不用管了: 2.在mysql安装路径下,执行mysqld --initialize命令进行初始化,mysql会自动帮你重新创建d ...

  5. SpringBoot(一)-- 知识点介绍

    一.简介 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置.简单来说,它提供了一堆依赖打包,并 ...

  6. iOS开发——iOS7(及以后版本) SDK自带二维码(含条形码)扫码、二维码生成

    本文转载至 http://www.cnblogs.com/leotangcn/p/4357907.html 现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来 ...

  7. Oracle和Mysql中mybatis模糊匹配查询区别

    1.Oracle AND NAME LIKE '%'||#{name}||'%' 2.Mysql AND NAME LIKE "%"#{name}"%"

  8. select选择option时触发的click事件google不兼容问题

    原先的方式,下面代码编写的问题在google浏览器下是触发不了click事件的,具体缘由不清楚,反正都可以概括为不兼容了 碰到问题时,百度到的一篇解决:http://blog.163.com/rihu ...

  9. 【SPMF开源数据挖掘平台入门】MaxSP算法使用说明

    前段时间,由于项目中用到了序列挖掘的算法,师兄推荐我用用SPMF.在此做个记录. 首先简单介绍一下SPMF: SPMF是一个采用Java开发的开源数据挖掘平台. 它提供了51种数据挖掘算法实现,用于: ...

  10. JS基础---->javascript的基础(一)

    记录一些javascript的基础知识.只是一起走过一段路而已,何必把怀念弄的比经过还长. javascript的基础 一.在检测一个引用类型值和 Object 构造函数时, instanceof 操 ...