• Nginx基础篇-Nginx的日志模块


    Nginx基础篇-Nginx的日志模块

    日志模块

    日志模块名称:
    	ngx_http_log_module
    
    • 1
    • 2

    相关指令

    log_format:日志格式
    access_log :访问日志
    error_log:错误日志
    open_log_file_cache:日志缓存
    
    • 1
    • 2
    • 3
    • 4
    	open_log_file_cache  max=N [inactive=time]  [mim_uses=N]  [valid=time]  | off
    
    该指令默认是禁止的,等同于:
    open_log_file_cache off;
    
    open_log_file_cache 指令的各项参数说明如下:
    max: 设置缓存中的最大文件描述符数量。如果超过设置的最大文件描述符数量,则采用  LRU (Least Recently Used) 算法清除"较不常使用的文件描述符"。  LRU (Least Recently Used) 算 法的基本概念是:当内存缓冲区剩余的可用空间不够时,缓冲区尽可能地先保留使用者最常使用 的数据,将最近未使用的数据移出内存,腾出空间来加载另外的数据。
    
    inactive:  设置一个时间,如果在设置的时间内没有使用此文件描述符,则自动删除此描述符。 此参数为可选参数,默认的时间为 10 秒钟。
    
    min_uses: 在参数 inactive 指定的时间范围内,如果日志文件超过被使用的次数,则将该日 志文件的描述符记入缓存。默认次数为 1。
    
    valid: 设置多长时间检查一次,看一看变量指定的日志文件路径与文件名是否仍然存在。默 认时间为 60秒。
    off: 禁止使用缓存。
    
    open_log_file_cache  指令的设置示例如下:
    open_log_file_cache  max=1000  inactive=20s  min_uses=2  valid=1m; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    日志的格式和命令

    log_format
    一、简介:Nginx有非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令定义。
    二、语法:Syntax: log_format name [escape=default|json] string …;
    name 表示格式名称
    string 表示定义的格式
    三、默认值:Default: log_format combined “…”;
    四、环境:Context: http context
    1.网站代理LB
    例如代理服务器的日志格式就不同
    ①、如果Nginx位于负载均衡器,squid,nginx反向代理之后,web服务器无法直接获取到客户端真实的IP地址。
    $remote_addr获取的是反向代理的IP地址。反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,
    用来记录客户端IP地址和客户端请求的服务器地址。
    ②、nginx代理日志格式如下

    		log_format porxy '$http_x_forwarded_for - $remote_user [$time_local] '
    ' "$request" $status $body_bytes_sent '
    ' "$http_referer" "$http_user_agent" ';
    
    • 1
    • 2
    • 3

    五、定义设置位置

    		vim /etc/nginx/nginx.conf
    		log_format combined  '$remote_addr - $remote_user [$time_local] '
    '	"$request" $status $body_bytes_sent '
    ' 	"$http_referer" "$http_user_agent" ';
    
    • 1
    • 2
    • 3
    • 4

    日志格式允许包含的变量

    $remote_addr, $http_x_forwarded_for
    ①.远程地址: 记录客户端IP地址
    ②.代理IP
    $remote_user
    远程用户:记录客户端用户名称
    [$time_local]
    本地时间:服务器自身时间
    $request
    请求:记录请求的URL和HTTP协议
    	"GET /1.html HTTP/1.1"
    	"GET /index.html HTTP/1.1"
    $status 
    状态:记录请求状态:200、404、503、100、301
    $body_bytes_sent 
    发送给客户端的字节数,不包括响应头的大小
    $bytes_sent
    发送给客户端的总字节数    (可在主配置文件中,增加此项观c)
    $msec 
    日志写入时间。单位为秒,精度是毫秒。
    $http_referer 
    记录从哪个页面链接访问过来的  (超链接)
    $http_user_agent
    记录客户端浏览器相关信息
    $request_length 
    请求的长度(包括请求行,请求头和请求正文)。
    $request_time
    请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
    $time_iso8601
     ISO8601标准格式下的本地时间。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    访问日志和错误日志

    access_log

    192.168.100.254 - - [17/Dec/2017:14:45:59 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.100.10/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0" "-"
    
    192.远程主机IP
    - -   用户
    【2017】时间
    get获得,下载,还有post提交。
     /nginx-logo.png  下载图片
    http版本
    状态码 什么结果。对,还是错
    368 大小
    引用自哪个连接,主页http://192.168.100.10/
    Mozilla 5.0浏览器的版本
    Windows NT 客户端系统类型
    -远程客户端主机地址  (请看注释)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    error_log

    日志缓存

    简介:大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。
    可以使用open_log_file_cache来设

    Syntax:open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m ;
    
    • 1

    ①max:缓存的最大数。(超过之后1000个文件描述符就把不常用的清理掉)。不是所有的日志文件都会缓存,只有使用量比较大的1000个fd才会缓存。

    ②inactive:无效时间20秒。结合最小次数使用min_user。淘汰策略

    ③min_user:结合无效时间,比如三分钟,低于3次访问,就清除出缓存。淘汰策略

    ④valid:有效时间,比如一分钟检查一次是否有更新。检查周期

    比如当服务器开启了日志缓存,日志缓存最多缓存1000个文件。如果超了这个数字,就把相对使用比较少的日志清理出缓存。
    为了避免使用频率较低的日志进入缓存,所以设置淘汰机制。
    在20秒之内,如果这个日志文件被使用的频率,低于3次,那么就有可能被清理出缓存。
    每隔一分钟检查一下缓存,看谁的计时器和使用次数不够就吧谁清理出去。

    Default:open_log_file_cache off;
    
    • 1
    Context:http, server, locatition
    
    • 1

    ①http{} 将整个服务器所有网站,所有页面的日志进行缓存
    ②server{} 将某一个网站的所有页面日志,进行缓存
    ③location{}某一个页面的日志,进行缓存。

  • 相关阅读:
    视频智能分析平台智能边缘分析一体机安防监控平台打手机检测算法工作原理介绍
    前端面试的话术集锦第 10 篇:高频考点(实现小型打包工具)
    单纯形投影算法
    Springioc的配置使用
    JavaWeb | HTTP 协议请求与响应格式
    Socket.D 基于消息的响应式应用层网络协议
    【MyBatisPlus】快速入门
    用HTML+CSS做一个漂亮简单的音乐网站
    博客系统(SSM)
    LeetCode:29. 两数相除
  • 原文地址:https://blog.csdn.net/yyf0430/article/details/126173041