07-Nginx 日志管理及自动切割
创始人
2024-02-07 01:09:55
0

  1. Nginx 日志管理及自动切割

对于程序员、运维来说,日志非常得重要。通过日志可以查看到很多请求访问信息,及异常信息。Nginx 也提供了对日志的强大支持。

      1. 日志管理范围

首先,下面要讲的这些日志相关属性可以配置在任意模块。在不同的模块,记录的是不同请求的日志信息。即,日志记录的请求范围是不同的。Nginx 日志一般可以指定三个范围: http{}模块范围、server{}模块范围,与 location{}模块范围。

  1. http{}模块范围

只要有请求通过 http 协议访问该 Nginx,就会有日志信息写入到这里的日志文件。

  1. server{}模块范围

只要有请求访问当前 Server,就会有日志信息写入到这里的日志文件。

 

  1. location{}模拟范围

只要有请求访问当前 location,就会有日志信息写入到这里的日志文件。

 

      1. 日志管理指令

下面以 http{}模块下的日志为例来学习 Nginx 日志管理指令。

 Nginx 的日志分为两类:访问日志与错误日志。Nginx 整个系统的默认日志在生成预编译文件 makefile 时就已经默认给配置好了。当然,无论是访问日志还是错误日志,其默认路径与名称在 nginx.conf 中均是可以修改的。在配置文件中不仅定义了日志文件的路径及名称, 还定义了日志格式。

  1. log_format

 用于设置访问日志的格式,其后的 main 是为该格式所起的名称,可以任意,而其后面的内容则为具体格式,通过 Nginx 内置变量定义。

  1. $remote_addr:获取访问者的 IP 地址。若当前 Nginx 是反代服务器,则此变量获取到的就是客户端的 IP 地址;若当前 Nginx 是静态代理服务器,则此变量获取到的是反代服务器的 IP 地址。
  2. $http_x_forwarded_for:获取客户端浏览器的 IP。若当前 Nginx 是反代服务器,则此变量获取到的值为杠(-)。若当前 Nginx 是静态代理服务器,则此变量获取到的是客户端的IP 地址。
  3. $remote_user:获取访问者的用户名。
  4. $time_local:获取请求访问的时间与时区。
  5. $request:获取请求的相关信息,包含请求方式、请求的 URI,及访问协议。
  6. $status:后端服务器向其返回的状态码,例如 200。
  7. $body_bytes_sent:后端服务器向客户端发送的响应体内容字节数。
  8. $http_referer:获取当前请求是从哪个页面过来的。其值在这里显示为杠(-)。
  9. $http_user_agent:用户所使用的代理,一般为浏览器。
  1. access_log

 该指令用于设置访问日志。上面的格式包含三个参数:

    1. 第一个参数是日志的存放路径与日志文件名;
    2. 第二个参数是日志格式名;
    3. 第三个参数是日志文件所使用的缓存。不过,即使不指定 buffer,其也会存在默认日志缓存的。
    4. access_log 还可以跟一个参数 off,用于关闭访问日志,即直接写 access_log off 即可关闭访问日志。
  1. error_log

 该指令用于指定错误日志的路径与文件名。需要注意以下几点:

  1. 其不能指定格式,因为其有默认格式。
  2. 可以使用自己指定的错误日志文件,不过,将来的访问异常日志就不会再写入到默认的

logs/error.log 文件中了。所以关于错误日志,一般使用默认的即可。

  1. 错误日志级别由低到高有:[debug | info | notice | warn | error | crit | alert | emerg],默

认为error,级别越高记录的信息越少。

  1. 错误日志默认是开启的。关闭错误日志的写法为  error_log     /dev/null;
  2. open_log_file_cache

该指令用于打开日志文件读缓存,将日志信息读取到缓存中,以加快对日志的访问。该功能默认为 off,即 open_log_file_cache off;

      1. 默认的/favicon.ico 请求

客户端对于服务端页面会自动提交一个/favicon.ico 请求,若没有 favicon.ico 文件则会在日志文件中报出 404。

从网上任意下载一个 ico 图标,将其重命名为 favicon.ico,然后放到 Linux 中的任意目录。然后再修改 nginx.conf 文件,在其中添加如下的 location{}模块。注意,若将其添加到的位置与页面在同一个目录,下面的 location{}模块不用设置。

 

      1. 日志自动切割

这里仅仅简单介绍一下日志切割的实现步骤,具体实现,网上非常多,用时再查即可。

  1. 创建切割shell 脚本文件

在 Linux 下创建一个实现日志切割的 shell 脚本文件,脚本文件的具体内容可以从网上查找,资源很多。例如,将该 shell 文件创建在 Nginx 安装目录下的 logs 目录中,并命名为cut_nginx_log.sh。

  1. 为该文件添加可执行权限

该文件是要作为定时任务被执行的,所以该文件需要具有可执行权限。

  1. 向 crontab 中添加一个定时任务

crontab 是 Linux 中的一个定义任务文件,每一行都代表一项定义任务。每行由 6 个字段组成,前 5 段是时间设定段,第 6 段是任务段。具体格式如下:

minute(0-59)     hour(0-23)     day(1-31)     month(1-12)     week(0-6)     command

本例执行如下命令后会打开文本编辑器,然后再输入如下文本内容即可。

 

相关内容

热门资讯

旅行的唯美句子 关于旅行的唯美句子 (精选165句)  在平时的学习、工作或生活中,大家都对那些朗朗上口的句子很是熟...
优美语句 精选优美语句大全  生活的无奈,有时并不源于自我,别人无心的筑就,那是一种阴差阳错。生活本就是矛盾的...
温暖亲情的句子 关于温暖亲情的句子  亲情,顾名思义,就是亲人的情义。人,作为社会的人,起首并每每接触的是哺育本人的...
晚上发朋友圈的好句子 关于晚上发朋友圈的好句子大全  在平日的学习、工作和生活里,大家都听说过或者使用过一些比较经典的句子...
经典朋友圈早安文案 经典朋友圈早安文案汇总(精选140句)  每一个人只要心里有山巅,即使道路再曲折,也能够到达人生的顶...
调侃男友俏皮句子 调侃男友俏皮句子 (精选85句)  在日常的学习、工作、生活中,大家总免不了要接触或使用句子吧,根据...
打动人心的正能量句子 打动人心的正能量句子  在日常学习、工作或生活中,大家最不陌生的就是句子了吧,根据结构的不同句子可以...
哀悼逝者的句子 哀悼逝者的句子(精选140句)  在平时的学习、工作或生活中,大家一定都接触过一些使用较为普遍的句子...
最新美到极致的惊蛰节气句子 最新美到极致的惊蛰节气句子(精选110句)  在日常学习、工作或生活中,大家都接触过很多优秀的句子吧...
曾经爱情的句子有哪些 关于曾经爱情的句子有哪些  1、曾经,在那个花季的年代,你突然出现在我面前,信诺誓言的对我说,你爱我...
表达兄弟情深的句子 关于表达兄弟情深的句子  在平日的学习、工作和生活里,许多人对一些广为流传的句子都不陌生吧,句子是能...
高情商发圈被秒赞的句子正能量 高情商发圈被秒赞的句子正能量  在平平淡淡的日常中,大家都接触过比较经典的句子吧,句子是能够表达一个...
悼念去世亲人的句子 悼念去世亲人的句子  在日常学习、工作抑或是生活中,大家肯定对各类句子都很熟悉吧,句子能表达一个完整...
七月你好的唯美句子 七月你好的唯美句子  在生活中,我跌倒过。我在嘲笑声中站起来,虽然衣服脏了,但那是暂时的,它可以洗净...
对某人失望心寒的句子 对某人失望心寒的句子(精选120句)  失望,有时候也是一种幸福,因为有所期待所以才会失望。因为有爱...
杨绛我们仨句子赏析 杨绛我们仨句子赏析  《我们仨》是2004年7月生活·读书·新知三联书店出版的图书,作者是杨绛。下面...
唯美心情句子 2022年常用唯美心情句子汇总90句  原来和文字沾上边的孩子从来都是不欢乐的,他们的欢乐象贪玩的小...
常用早安共勉句子微信 常用早安共勉句子微信大合集41句  人生如车,或长途,或短途;人生如戏,或喜,或悲。很多事,过去了,...
感恩父母恩情的句子 关于感恩父母恩情的句子大全  无论在学习、工作或是生活中,大家最不陌生的就是句子了吧,句子是能够表达...
早上发朋友圈正能量的句子   生活没有真正的完美,只有不完美才是最真实的美;生活没有一帆风顺的,只有披荆斩棘才能路路顺;生活没...