【Nginx】Nginx 日记配置

打印 上一主题 下一主题

主题 977|帖子 977|积分 2931

Nginx 日记配置

Nginx 主要有两种日记范例:访问日记(access log)和错误日记(error log),可以帮助监控和调试服务的运行。
1.访问日记

访问日记主要纪录客户端的请求,客户端向 Nginx 发起的每一次都会被纪录到访问日记中。客户端IP、欣赏器信息等都可以在访问日记中获取得到,详细的日记纪录格式可以通过 log_format 来进行定义。
1.1 语法

  1. # 设置访问日志
  2. access_log  path  [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
  3. # 关闭访问日志
  4. access_log  off;
复制代码
访问日记设置字段分析:


  • path:指定访问日记的存储路径。
  • format:指定日记的格式。
  • buffer:用来指定日记写入时的缓存大小,默认是64K。
  • gzip:日记写入前先辈行压缩,从 1 到 9 数值越大压缩比越高,同事压缩的速度也越慢,默认为 1。
  • flush:设置缓存的有效时间,如果超过 flush 指定的时间,缓存中的内容将被清空。
  • if:条件判断,如果指定的条件计算为0或空字符串,那么该请求不会写入日记。
1.2 作用域

可以利用 access_log 日记的作用域有:http、server、loaction、limit_except,如果在这几个作用域之外利用 access_log ,Nginx 会报错。
1.3 根本利用

指定 access_log 的日记写入路径为 Nginx 目录下 logs/access.log 文件。
  1. access_log logs/access.log
复制代码
指定 access_log 的日记写入路径为 Nginx 目录下 logs/access.log 文件,日记的缓存大小为 32K,日记写入前启用 gzip 进行压缩,压缩比利用默认值 1,缓存数据有效时间为 1 分钟。
  1. access_log logs/access.log
  2. buffer=32k gzip flush=1m
复制代码
1.4 log_format 自定义日记格式

Nginx 预定义了日记格式,如果没有明白指定日记格式将利用预定义的日记格式。
  1. log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  2.                   '$status $body_bytes_sent "$http_referer" '
  3.                   '"$http_user_agent" "$http_x_forwarded_for"';
复制代码
如果需要修改,参考 log_format 的语法进行修改即可。
  1. log_format name [escape=default|json] string ...;
复制代码
log_format 语法字段分析:


  • name:格式名称,在 access_log 中显性引用,否则会利用默认的语法。
  • escape:置变量中的字符编码方式是 json 还是 default ,默认是 default。
  • stirng:要定义的日记格式内容,该参数可以有多个,参数中可以利用Nginx变量。
如下是 log_format 中常用的一些变量:
变量寄义$bytes_sent发送给客户端的总字节数$body_bytes_sent发送给客户端的字节数,不包括响应头的大小$connection连接序列号$connection_requests当前通过连接发出的请求数量$msec日记写入时间,单位为秒,精度是毫秒$pipe如果请求是通过http流水线发送,则其值为"p",否则为“."$request_length请求长度(包括请求行,请求头和请求体)$request_time请求处理时长,单位为秒,精度为毫秒,从读入客户端的第一个字节开始,直到把末了一个字符发送张客户端进行日记写入为止$status响应状态码$time_iso8601尺度格式的当地时间,形如“2017-05-24T18:31:27+08:00”$time_local通用日记格式下的当地时间,如"24/May/2017:18:31:27 +0800"$http_referer请求的referer地址。$http_user_agent客户端欣赏器信息。$remote_addr客户端IP$http_x_forwarded_for当前端有代理服务器时,设置web节点纪录客户端地址的配置,此参数收效的前提是代理服务器也要进行干系的x_forwarded_for设置。$request完整的原始请求行,如 “GET / HTTP/1.1”$remote_user客户端用户名称,针对启用了用户认证的请求$request_uri完整的请求地址,如 “https://daojia.com/” 1.5 访问日记配置测试

关闭访问日记,客户端向 Nginx 服务器发起请求,访问日记未纪录。
  1. access_log off;
复制代码

开启访问日记,利用预定义的 log_format,日记按照预定义的格式进行打印。
  1. access_log  logs/access.log;
复制代码

开启访问日记,利用自定义的 log_format,可以或许按照指定的格式进行打印。
  1. log_format self_format '$remote_addr - $http_user_agent        - $remote_addr'
  2.                        '"$request" $status $body_bytes_sent '
  3.                        '"$http_referer" "$http_user_agent" "$request_uri"';
  4. access_log  logs/access.log self_format;
复制代码

2.错误日记

错误日记主要纪录服务器和请求处理过程中的错误信息,通过 error_log 实现。
错误日记在Nginx中是通过error_log指令实现的。该指令纪录服务器和请求处理过程中的错误信息。
2.1 语法

  1. # 设置错误日志及错误级别
  2. error_log file [level];
复制代码
访问日记设置字段分析:


  • error_log,关键字,不能修改。
  • file:日记文件存放的路径。
  • level:错误级别,常见的日记级别有 debug、info、notice、warn、error、crit、alert、merg,级别越高,纪录的信息越少,默认为 error。
注意:不要配置info品级较低的级别,会带来大量的磁盘I/O斲丧。
2.2 作用域

可以利用 error_log 日记的作用域有:main、http、server、loaction,如果在这几个作用域之外利用 error_log,Nginx 会报错。
2.3 根本利用

指定 error_log 的日记写入路径为 Nginx 目录下的 logs/error.log 文件。
  1. error_log logs/error.log;
复制代码
指定 error_log 的日记写入路径为 Nginx 目录下的 logs/error.log 文件,日记级别为 info。
  1. error_log logs/error.log info;
复制代码
2.4 错误日记配置测试

指定 error_log 的日记写入路径为 Nginx 目录下的 logs/error.log 文件,正常输出错误到 logs/error.log 中。
  1. error_log logs/error.log;
复制代码

指定 error_log 的日记写入路径为 Nginx 目录下的 logs/error.log 文件,日记级别为 info。
  1. error_log logs/error.log info;
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表