nginx日志

1 日志管理

1.1 Nginx日志描述

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

1.2 Nginx日志格式

打开nginx.conf配置文件:vim /usr/local/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 -f /usr/local/nginx/logs/access.log

1.3 Nginx自定义日志

打开nginx.conf配置文件去掉#注释见下图:

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

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

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

执行命令:nginx-s reload

查看日志文件:

执行命令:tail -100f /usr/local/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

        #!/bin/bash
        #设置日志文件存放目录
        LOG_HOME="/usr/local/software/nginx/logs/"

        #备分文件名称
        LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log

        #重命名日志文件
        mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log

        #向nginx主进程发信号重新打开日志 
        kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`

创建crontab设置作业

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

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

原文发布于微信公众号 - nginx(nginx-study)

原文发表时间:2018-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Linux下TCP最大连接数受限问题

一、 文件数限制修改 1、用户级别 查看Linux系统用户最大打开文件限制: # ulimit -n 1024 (1) vi /etc/security/li...

1.3K60
来自专栏散尽浮华

Linux下路由配置梳理

在日常运维作业中,经常会碰到路由表的操作。下面就linux运维中的路由操作做一梳理: -------------------------------------...

845110
来自专栏技术记录

解决openssh漏洞,升级openssh版本

关于解决漏洞的问题我就不详说了,主要就是升级版本。这里我们就直接简单记录下步骤: 1、升级 使用root用户登录系统进入到/home/guankong ,上传o...

66280
来自专栏IMWeb前端团队

hexo 博客利用 github 分支同步源文件

hexo 是一个优秀的静态博客工具,唯一的不足就是源文件无法同步,让人几乎只能在一台电脑上写博客,为了解决这个问题,我们可以使用 Github 来管理我们...

269100
来自专栏IMWeb前端团队

webpack2 终极优化

? webpack是当下最流行的js打包工具,这得益于网页应用日益复杂和js模块化的流行。webpack2增加了一些新特性也正式发布了一段时间,是时候告诉大...

404110
来自专栏L宝宝聊IT

构建SSH服务体系示例

19250
来自专栏IT探索

samba

2)增加用户:smbpasswd -a username  ,注:username为linux用户

15720
来自专栏互联网杂技

idea下java web的hello world

学习java Web的同学,跟这个走; 前三张图片,不解释, ? ? ? 创建之后,打开这个文件,写两个Hello world ? 配置 ? 选择配置tomca...

39980
来自专栏令仔很忙

新手学JAVA(十一)-多线程----线程的生命周期

当一个线程被创建并启动之后,并不是一开始就处于执行状态,已不是一直处于运行状态。线程也是有生命周期的,包括:创建(New)、就绪(Runnable)、阻塞(B...

10610
来自专栏地方网络工作室的专栏

linux\mac 日常入门命令行使用——搜索文件\文件夹

linux\mac 日常入门命令行使用——搜索文件\文件夹 搜索文件或者文件夹,是一个常见的需求。我们可以用多种命令来实现我们的需求。 find 命令实现搜索 ...

311100

扫码关注云+社区

领取腾讯云代金券