nginx 日志配置

阳光穿透心脏的1/2处 2022-02-14 02:47 376阅读 0赞

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 日志格式

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

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

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

access_log语法格式及参数语法

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

open_log_file_cache指令

  1. 语法格式:
  2. open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
  3. 使用open_log_file_cache来设置日志文件缓存(默认是off)。
  4. 默认值: open_log_file_cache off;
  5. 作用于: http, server, location
  6. 对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。可以使用open_log_file_cache来设置日志文件缓存(默认是off),格式如下:
  7. 参数注释如下:
  8. max # 设置缓存中的最大文件描述符数量,如果缓存被占满,采用LRU算法将描述符关闭。
  9. inactive # 设置存活时间,默认是10s
  10. min_uses # 设置在inactive时间段内,日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次
  11. valid # 设置检查频率,默认60s
  12. off # 禁用缓存

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读

    相关 nginx 日志配置

    1、nginx 日志介绍 `nginx` 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 `ngx_http_log_module`

    相关 Nginx日志配置远程Syslog采集

    本文将指引你:如何对Nginx日志进行采集,并通过Syslog协议,自动实时的发送到远程的集中日志分析中心,便于集中式的日志存储和管理,提高网站的运维效率。 第一步:初始化日

    相关 nginx日志切割

    Web 访问日志 (access\_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息。