精华内容
下载资源
问答
  • nginx 日志配置

    千次阅读 2019-04-25 17:19:27
    nginx 日志说明 不同用户防卫Nginx会把每个用户访问往咱的日志信息记录到指定的日志文件里,供网站管理员分析用户浏览行为等,此功能又ngx_http_log_module 模块负责。 控制访问日志的参数 参数 说明 log_...

    nginx access_log

    nginx 日志说明

    不同用户防卫Nginx会把每个用户访问往咱的日志信息记录到指定的日志文件里,供网站管理员分析用户浏览行为等,此功能又ngx_http_log_module 模块负责。

    控制访问日志的参数

    参数说明
    log_format通过不同的名称来定义日志的输出格式,可以定义多个
    access_log用来指定日志保存的路径和使用的输出格式

    nginx中日志的作用

    • access日志

    记录nginx处理的请求的过程,包含请求类型、时间、客户端信息、处理结果、处理时长等信息,具体可以通过log_format指令引用特定变量来记录相关信息。

    • error日志

    记录nginx进程启动、停止、重启及处理请求过程中发生的错误信息。

    • rewrite日志

    记录rewrite规则工作的过程,可以用于调试rewrite规则。

    nginx中可以记录的日志主要有access日志、error日志和rewrite日志。前两种由ngx_http_log_module模块予以支持,rewrite日志则由ngx_http_rewrite_module模块提供,这两个模块默认都已包含且启用。

    自定义一个 nginx 日志格式

    # 定义一个日志的输出格式
    log_format main '$remote_addr - $remote_user [$time_local] "$request"  $status $body_bytes_sent "$http_referer"  "$http_user_agent" "$http_x_forwarded_for"';
    # 指定日志的报错位置和指定日志的输出格式为上面定义的格式(main为上面定义的日志标签)
    access_log         logs/access.log main;
    
    

    log_format 语法格式及参数语法说明

    log_format [name [string];
    
    name表示格式名称,string表示等义的格式。log_format有一个默认的无需设置的combined日志格式,相当于apache的combined日志格式。
    
    log_format格式变量:
    
    $http_referer          # 记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
    $http_user_agent       # 记录客户端访问信息,例如:浏览器、手机客户端等
    $remote_addr           # 记录客户端IP地址
    $http_x_forwarded_for  # 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置
    $remote_user           # 记录客户端用户名称
    $request               # 记录请求的URL和HTTP协议
    $status                # 记录请求状态
    $body_bytes_sent       # 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
    $bytes_sent            # 发送给客户端的总字节数。
    $connection            # 连接的序列号。
    $connection_requests   # 当前通过一个连接获得的请求数量。
    $msec                  # 日志写入时间。单位为秒,精度是毫秒。
    $pipe                  # 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
    $http_referer          # 记录从哪个页面链接访问过来的
    $http_user_agent       # 记录客户端浏览器相关信息
    $request_length        # 请求的长度(包括请求行,请求头和请求正文)。
    $request_time          # 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
    $time_iso8601          # ISO8601标准格式下的本地时间。
    $time_local            # 通用日志格式下的本地时间。
    
    

    access_log语法格式及参数语法

    access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
    
    作用域   : http, server, location, if in location, limit_except
    
    其他参数说明
    
    access_log  off;  #关闭access_log,即不记录访问日志
    
    access_log path [format [buffer=size [flush=time]] [if=condition]];
    
    access_log path format gzip[=level] [buffer=size] [flush=time] [if=condition];
    
    access_log syslog:server=address[,parameter=value] [format [if=condition]];
    
    说明:
    
    buffer=size       # 为存放访问日志的缓冲区大小
    
    flush=time        # 为缓冲区的日志刷到磁盘的时间
    
    zip[=level]       # 表示压缩级别
    
    [if = condition]  # 表示其他条件
    
    
    
    

    open_log_file_cache指令

    
    语法格式: 
    open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
    
    使用open_log_file_cache来设置日志文件缓存(默认是off)。
    
    默认值: open_log_file_cache off;
    作用于: http, server, location
    
    对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。可以使用open_log_file_cache来设置日志文件缓存(默认是off),格式如下:
    参数注释如下:
    max       # 设置缓存中的最大文件描述符数量,如果缓存被占满,采用LRU算法将描述符关闭。
    inactive  # 设置存活时间,默认是10s
    min_uses  # 设置在inactive时间段内,日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次
    valid     # 设置检查频率,默认60s
    off       # 禁用缓存
    
    
    
    展开全文
  • 主要介绍了nginx日志配置指令详解,nginx有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志,需要的朋友可以参考下
  • 本篇文章主要介绍了详解Nginx日志配置及日志切割,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Nginx 日志配置、日志切割

    千次阅读 2019-09-26 09:20:21
    Nginx 日志配置设置 access.log语法log_format自定义格式设置error_log语法日志切割 前置文章:Nginx 的配置文件 nginx.conf Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问...

    前置文章:Nginx 的配置文件 nginx.conf

    Nginx日志对于统计、系统服务排错很有用。
    Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。
    通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。
    错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。
    因此,将日志好好利用,可以得到很多有价值的信息。

    设置 access.log

    语法

    在 nginx.conf 文件里配置:

    access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; 
    #设置访问日志
    access_log off;
    #关闭访问日志
    
    • path 指定日志的存放位置。
    • format 指定日志的格式。默认使用预定义的combined。
    • buffer 用来指定日志写入时的缓存大小。默认是64k。
    • gzip 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。
    • flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。
    • if 条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。
    • 另外,还有一个特殊的值off。如果指定了该值,当前作用域下的所有的请求日志都被关闭。

    示例:

    http {
       ...
    	       ##日志格式使用默认的combined;指定日志的缓存大小为32k;日志写入前启用gzip进行压缩,压缩比使用默认值1;缓存数据有效时间为1分钟。
    	    access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m;  
       ...
    }
    

    access_log指令的作用域分别有http,server,location。
    更里面的设置,会覆盖外面的设置。

    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"';
    

    各参数明细表:
    在这里插入图片描述
    显示最新追加的日志:
    tail -f /usr/local/nginx/logs/access.log
    在这里插入图片描述

    设置error_log

    错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。
    错误日志不支持自定义。

    语法

    error_log path [level];
    
    • path参数指定日志的写入位置。
    • level参数指定日志的级别。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值(等级从低到高排列)。
      只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error。

    示例:

    error_log  logs/error.log; 
    error_log  logs/error_notice.log  notice;
    error_log  logs/error_info.log  info;			
    ##可以将不同的错误类型分开存储
    

    日志切割

    测试,按分钟切割
    可以在 conf 目录下vim logcut.sh

    #!/bin/bash
    #设置日志文件存放目录
    LOG_HOME=/usr/local/nginx/logs/
    #备分文件名称
    LOG_PATH_BAK="$(date -d "last_minute" +%Y%m%d%H%M)"
    #重命名日志文件,mv 会删除原文件,导致日志丢失,因为Nginx不会自己去再创建一个日志文件
    mv ${LOG_HOME}/host.access.log ${LOG_HOME}/access.${LOG_PATH_BAK}.log
    mv ${LOG_HOME}/error.log ${LOG_HOME}/error.${LOG_PATH_BAK}.log
    #向 Nginx 主进程发送 USR1 信号。Nginx 里 USR1 信号是重新打开日志文件
    kill -USR1 `cat ${LOG_HOME}/nginx.pid`
    

    chmod u+x logcut.sh

    配置cron:
    crontab -e

    */1 * * * * /usr/local/nginx/conf/logcut.sh
    #分/1 时 日 月 年
    

    进入 logs 文件夹:
    在这里插入图片描述
    按日切割

    在 conf 目录下vim logcut.sh

    #!/bin/bash
    #设置日志文件存放目录
    LOG_HOME=/usr/local/nginx/logs/
    #备分文件名称
    LOG_PATH_BAK="$(date -d "yesterday" +%Y%m%d)"
    #重命名日志文件,mv 会删除原文件,导致日志丢失,因为Nginx不会自己去再创建一个日志文件
    mv ${LOG_HOME}/host.access.log ${LOG_HOME}/access.${LOG_PATH_BAK}.log
    mv ${LOG_HOME}/error.log ${LOG_HOME}/error.${LOG_PATH_BAK}.log
    #向 Nginx 主进程发送 USR1 信号。Nginx 里 USR1 信号是重新打开日志文件
    kill -USR1 `cat ${LOG_HOME}/nginx.pid`
    

    chmod u+x logcut.sh

    配置cron:
    crontab -e

    * * */1 * * /usr/local/nginx/conf/logcut.sh
    #分 时 日/1 月 年
    
    展开全文
  • Nginx 日志配置、日志切割、日志切割脚本.pdf
  • Nginx日志配置整理

    万次阅读 2015-05-16 13:09:06
    Nginx日志配置整理
    环境介绍:
    
    OS:CentOS 6.X
    Nginx版本:1.4.7以上
    打印Nginx日志,对于排查错误必不可缺!
    因为Nginx基本都是由模块控制的,参考链接:http://nginx.org/en/docs/http/ngx_http_log_module.html
    Nginx日志相关的配置如access_log、error_log、log_format、open_log_file_cache、log_not_found、log_subrequest、rewrite_log。
    这时得赞一下Nginx的日志管理模式:每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义。

    1. access_log指令
    参考链接:http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

    语法: access_log path [format [buffer=size [flush=time]]];
    access_log path format gzip[=level] [buffer=size] [flush=time];
    access_log syslog:server=address[,parameter=value] [format];
    access_log off;
    默认值: access_log logs/access.log combined;
    配置段: http, server, location, if in location, limit_except

    2. error_log指令
    参考链接:http://nginx.org/en/docs/ngx_core_module.html#error_log

    语法: error_log file | stderr | syslog:server=address[,parameter=value] [debug | info | notice | warn | error | crit | alert | emerg];
    默认值: error_log logs/error.log error;
    配置段: main, http, server, location

    配置错误日志。

     默认为crit,可根据需求调整,我指定为error


    3. log_format指令

    语法: log_format name string …;
    默认值: log_format combined “…”;
    配置段: http
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    日志格式允许包含的变量注释如下:
    $remote_addr         记录客户端IP地址
    $remote_user 记录客户端用户名称
    $time_local 通用日志格式下的本地时间。
    $request 记录请求的URL和HTTP协议
    $status 记录请求状态
    $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小;
    $http_referer 记录从哪个页面链接访问过来的
    $http_user_agent 记录客户端浏览器相关信息

    $http_x_forwarded_for 记录客户端IP地址

    --先整理这么多。。。。。


    展开全文
  • 运维配置:Nginx日志配置详解

    千次阅读 2019-02-13 22:18:52
    Nginx日志配置详解 前言 Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息...

    Nginx日志配置详解

    前言

    Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。

    设置access_log

    访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format指令定义。

    语法

    access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志
    access_log off; # 关闭访问日志
    
    • path 指定日志的存放位置。
    • format 指定日志的格式。默认使用预定义的combined。
    • buffer 用来指定日志写入时的缓存大小。默认是64k。
    • gzip 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。
    • flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。
    • if 条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。

    另外,还有一个特殊的值off。如果指定了该值,当前作用域下的所有的请求日志都被关闭。

    作用域

    可以应用access_log指令的作用域分别有http,server,location,limit_except。也就是说,在这几个作用域外使用该指令,Nginx会报错。

    以上是access_log指令的基本语法和参数的含义。下面我们看一几个例子加深一下理解。

    基本用法

    access_log /var/logs/nginx-access.log
    

    该例子指定日志的写入路径为/var/logs/nginx-access.log,日志格式使用默认的combined。

    access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m
    

    该例子指定日志的写入路径为/var/logs/nginx-access.log,日志格式使用默认的combined,指定日志的缓存大小为32k,日志写入前启用gzip进行压缩,压缩比使用默认值1,缓存数据有效时间为1分钟。

    使用log_format自定义日志格式

    Nginx预定义了名为combined日志格式,如果没有明确指定日志格式默认使用该格式:

    log_format combined '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent"';
    

    如果不想使用Nginx预定义的格式,可以通过log_format指令来自定义。

    语法

    log_format name [escape=default|json] string ...;
    
    • name 格式名称。在access_log指令中引用。
    • escape 设置变量中的字符编码方式是json还是default,默认是default。
    • string 要定义的日志格式内容。该参数可以有多个。参数中可以使用Nginx变量。

    下面是log_format指令中常用的一些变量:

    下面演示一下自定义日志格式的使用:

    access_log /var/logs/nginx-access.log mainlog_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
    

    使用log_format指令定义了一个main的格式,并在access_log指令中引用了它。假如客户端有发起请求:https://example.com/,截取的一个请求的日志记录:

    122.112.XX.XX - - [13/Feb/2019:21:12:14 +0800] "GET / HTTP/1.1" 200 190 "-""Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36""-"
    

    我们看到最终的日志记录中 r e m o t e u s e r 、 remote_user、 remoteuserhttp_referer、$http_x_forwarded_for都对应了一个-,这是因为这几个变量为空。

    设置error_log

    错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。

    语法

    配置错误日志文件的路径和日志级别。

    error_log file [level];
    Default:
    error_log logs/error.log error;
    

    第一个参数指定日志的写入位置。

    第二个参数指定日志的级别。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值。可以看到其取值范围是按紧急程度从低到高排列的。只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error。

    基本用法

    error_log /var/logs/nginx/nginx-error.log
    

    它可以配置在:main, http, mail, stream, server, location作用域。

    例子中指定了错误日志的路径为:/var/logs/nginx/nginx-error.log,日志级别使用默认的error。

    open_log_file_cache

    每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果你的日志文件路径中使用了变量,如access_log /var/logs/$host/nginx-access.log,为提高性能,可以使用open_log_file_cache指令设置日志文件描述符的缓存。

    语法

    open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
    
    • max 设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭。
    • inactive 设置缓存存活时间,默认是10s。
    • min_uses 在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次。
    • valid:设置多久对日志文件名进行检查,看是否发生变化,默认是60s。
    • off:不使用缓存。默认为off。

    基本用法

    open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
    

    它可以配置在http、server、location作用域中。

    例子中,设置缓存最多缓存1000个日志文件描述符,20s内如果缓存中的日志文件描述符至少被被访问2次,才不会被缓存关闭。每隔1分钟检查缓存中的文件描述符的文件名是否还存在。

    总结

    Nginx中通过access_log和error_log指令配置访问日志和错误日志,通过log_format我们可以自定义日志格式。如果日志文件路径中使用了变量,我们可以通过open_log_file_cache指令来设置缓存,提升性能。

    另外,在access_log和log_format中使用了很多变量,这些变量没有一一列举出来,详细的变量信息可以参考Nginx官方文档

    展开全文
  • Nginx日志配置详解

    万次阅读 2018-03-08 11:21:13
    前言Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error...本文将详细描述一下如何配置Nginx日志。设置access_log访问日志主要记录客户端的请求。客户端向Nginx服务器发起...
  • sh-3.2# crontab -e
  • Ingress Nginx 日志配置

    千次阅读 2020-04-28 07:30:00
    前言1、Ingress Nginx默认访问日志都输出到/var/log/nginx/access.log文件中,但是对于生产环境来说,不可能把所有日志都输到一个日志文件中,一般情况...
  • nginx系列-04-nginx日志配置

    千次阅读 2016-10-25 22:24:10
    log_format ...本篇文章将介绍nginx日志配置相关的内容。说到日志配置,无非以下几项了: 日志级别 debug …… 日志记录方式 文件 其他 日志格式 1 log_format1.1 语法格式该指令用来设置日志记录的
  • Nginx日志配置(超详细)

    万次阅读 2019-10-26 16:05:24
    Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。...本文将详细描述一下如何配置Nginx日志。 原文网址:https://blog.csdn.net/weixin_384052...
  • 后端实践:Nginx日志配置(超详细)

    千次阅读 2019-10-21 11:14:44
    前言 Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问日志)和error_log...本文将详细描述一下如何配置Nginx日志。 设置access_log 访问日志主要记录客户端的请求。客户端向...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,762
精华内容 53,904
关键字:

nginx日志配置