zoukankan      html  css  js  c++  java
  • 《Nginx

    一: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"

    --

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

    --

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

  • 相关阅读:
    20200813质因数分解 --已知正整数n是两个不同的质数的乘积,试求出较大的那个质数 (奥赛一本通 P71 8)
    20200807求梯形面积,要求输入浮点数,输出精度为2位
    c++语言printf()输出格式大全 scanf()输入格式大全
    20200803给出一 名学生的语文和数学成绩,判断他是否恰好有一门课不及格(<60分),如果是输出1;否则输出0(奥赛一本通 p32 10)
    20200803-判断一个数能否同时被3,5,7整除(奥赛一本通 p32 9)
    20200802--利用公式 e=1+1/1!+1/2!+...+1/n!,求e的值, 要求保留小数点后10位(奥赛一本通 p67 2)
    20200802 给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+...+n!),输出阶乘的和 (奥赛一本通p67 1题)
    线程
    mysql逻辑架构
    《python网络数据采集》笔记2
  • 原文地址:https://www.cnblogs.com/25-lH/p/8743120.html
Copyright © 2011-2022 走看看