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

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

07-Nginx 日志管理及自动切割相关推荐

  1. Nginx日志管理及切割

    1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某个服务或server的性能瓶颈等.因此,将 ...

  2. 基于python的Nginx日志管理分析系统

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 本项目利用 pandas + sklearn 对 Nginx 的日志数据进行统计分析,并利用 fla ...

  3. nginx日志切割并使用flume-ng收集日志

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...

  4. nginx日志切割脚本

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...

  5. rsync同步Nginx日志遇到问题总结

    一.目的 将nginx 日志通过普通用户利用rsync公钥认证的方式实时同步到本地服务器上,之后使用elk程序进行处理. 二.遇到问题及解决方法思路 问题1.文件权限:nginx 的日志默认权限如下: ...

  6. Supervisor多进程管理 异常自动重启 可视化管理

    一.序言 Supervisor是多进程管理工具,在Docker中相关联的进程能够通过supervisor来管理. 微服务项目开发阶段,可用于微服务子项目的启动管理. 支持web可视化管理,能够极大方面 ...

  7. nginx那点事儿——nginx日志详解

    nginx日志 前言 一.日志配置.格式 二.日志格式包含的变量 三.日志缓存 1.缓存设置 2.作用位置 四.日志切割 1.切割配置文件 2.日志切割原理 五.日志分析 前言 Nginx有非常灵活的 ...

  8. linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例

    网站上线后,没怎么注意过日志,有一天需要查日志时,才发现竟然有 100 多个 G,一个文本文件竟然有 100 多个G,这也太大了. nginx 是一个非常轻量的 web 服务器,体积小.性能高.速度快 ...

  9. linux切割日志方法,Linux下nginx生成日志自动切割的实现方法

    1.编辑切割日志的 shell 程序,目录自定 #vi /data/Nginx/cut_Nginx_log.sh 输入代码: #!/bin/bash # This script run at 00:0 ...

最新文章

  1. 年过四十的男人,为何路越走越窄?
  2. Linux学习(六)---实用指令(只看这篇就能完成基础的学习)
  3. 杭州网络推广浅析网站优化如何更快的提升收录?
  4. html5毕业作品开场白,毕业典礼主持人开场白
  5. socket通信(5)4次挥手
  6. Swintransformer详细设计文档
  7. 【2016计概A期末】照亮房间
  8. 第一篇博客,写在颓废之时
  9. MySQL format()函数
  10. 用css3制作一个Music Player Menu
  11. 20190810:存在重复(三种解法)
  12. umount强制卸载不起作用,卸载光驱终极办法---fuser
  13. 有效解决vue动态绑定多个class的官方实例语法无效的问题
  14. 如何配置Windows Live Writer发布博客园随笔
  15. 有点累了?不如看看兵法三十六计。
  16. C++ - Opencv模板匹配与块匹配
  17. java class文件比较_Beyound Compare中比较java字节码class文件
  18. mstar Android解锁,液晶电视维修之Mstar方案从强刷包提取引导的方法
  19. 图片标签z-index设置不起作用
  20. 如何做浏览器兼容性测试?教你几招

热门文章

  1. swagger mock文档服务器,通过 Swagger 定义自动生成 Mock 数据
  2. The target table tablename of the UPDATE is not updatable---解决
  3. Eclipse的调试
  4. 推荐生态中的bias和debias
  5. “is not a valid date and time ”错误提示 的【排除故障】
  6. 当 AI 踢进世界杯......
  7. 清理计算机3——硬件
  8. Golang语言社区——为什么说未来 5 年将是 Go 语言的天下?
  9. 在Asus Merlin固件的Dropbear使用及免密登录
  10. quartz 配置每周四早上6点