Nginx日志管理

2017-09-11 16:15:11

日志管理

1.1 Nginx日志描述

通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。

 

1.2 Nginx日志格式

打开nginx.conf配置文件:vi /usr/local/software/nginx/conf/nginx.conf

日志部分内容:

#access_log  logs/access.log  main;

日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

 

默认“main”日志格式:


  参数明细表:

$remote_addr

客户端的ip地址(代理服务器,显示代理服务ip)

$remote_user

用于记录远程客户端的用户名称(一般为“-”)

$time_local

用于记录访问时间和时区

$request

用于记录请求的url以及请求方法

$status

响应状态码,例如:200成功、404页面找不到等。

$body_bytes_sent

给客户端发送的文件主体内容字节数

$http_user_agent

用户所使用的代理(一般为浏览器)

$http_x_forwarded_for

可以记录客户端IP,通过代理服务器来记录客户端的ip地址

$http_referer

可以记录用户是从哪个链接访问过来的

 

查看日志命令:tail -100f /usr/local/software/nginx/logs/access.log


1.3 Nginx自定义日志

打开nginx.conf配置文件:

vi /usr/local/software/nginx/conf/nginx.conf,去掉#注释见下图:


自定义某一个server配置的日志,使用“main”日志格式。

 

日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

重新读取加载Nginx配置文件:

执行命令:/usr/local/software/nginx/sbin/nginx-s reload

查看日志文件:

执行命令:tail -100f /usr/local/software/nginx/logs/abc.access.log


 

1.4 Nginx日志分隔

nginx的日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。

第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。

第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。然后你就可以处理旧的日志文件了。[或者重启nginx服务]

 

nginx日志按每分钟自动切割脚本如下:

新建shell脚本:vi/usr/local/software/nginx/nginx_log.sh 

[plain] view plain copy

  1. #!/bin/bash  

  2. #设置日志文件存放目录  

  3. LOG_HOME="/usr/local/software/nginx/logs/"  

  4.   

  5. #备分文件名称  

  6. LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log  

  7.   

  8. #重命名日志文件  

  9. mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log  

  10.   

  11. #向nginx主进程发信号重新打开日志   

  12. kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`  

创建crontab设置作业

#设置日志文件存放目录crontab -e

*/1 * * * *  sh /usr/local/software/nginx/nginx_log.sh

       


                --以上为《Nginx教程(三) Nginx日志管理》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。


  • 2017-11-28 14:53:05

    Vagrant 实战

    Vagrant 是一个可创建轻量级、高复用性和便于移植的开发环境的工具。 此文章是作者折腾vagrant的笔记, 希望大家看后,不再去网上搜罗资料, 能顺利搭建vagrant环境。vagrant更新较快, 还建议大家以官网为主。Vagrant官网

  • 2017-11-28 14:55:13

    使用 Vagrant 打造跨平台开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。

  • 2017-11-28 14:57:19

    vagrant up 失败解决办法

    直接使用VirtualBox开启一个vm也会失败,基本上可以确定是VirtualBox版本的问题 有遇到过安装了VirtualBox-5.0.22-108108-Win.exe的版本在win7下用不了,卸载重装VirtualBox-4.3.12-93733-Win.exe之后可用。

  • 2017-12-05 22:30:02

    php7.0升级php7.2

    看电脑上的教程要备份7.0配置文件以及扩展啥的,我感觉不如卸载干净重新安装

  • 2017-12-06 09:35:10

    分页优化的四种方式

    在大数据量的情况下,原本很简单的分页如果没有处理好,你会发现分页的请求会消耗你大量的数据库时间。如果你遇到了这个问题,文章给了你几个很好的解决的方案。当然,初学者若能看完这篇文章,那么它会指导你写出更具有扩展性的分页代码。