初识nginx基础篇-日志管理和切割

一、日志分类

Nginx日志主要分为两种,访问日志和错误日志。两种日志可以在http和server模块中配置,nginx有一个非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义

1、访问日志

访问日志主要记录客户端访问Nginx的每一个请求

log_format用来设置日志格式,只能在http模块下设置

log_format name name(格式名称) type(格式样式)

下面是默认的nginx日志格式:

log_format main '$remote_addr - $remote_user [$time_local]"$request" '

'$status $body_bytes_sent"$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

字段含义:

$remote_addr远程客户端的IP地址。

$remote_user远程客户端用户名称,如果网站设置了用户验证的话就会有,否则空白

[$time_local]访问的时间与时区比如18/Jul/2012:17:00:01+0800时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。

$request记录请求的url和http协议

$status记录请求返回的http状态码.

$body_bytes_sent记录发送给客户端的文件主体内容的大小

$http_referer记录 记录从哪个页面链接访问过来的。

$http_user_agent记录客户端浏览器信息

$http_x_forwarded_for客户端的真实ip。当nginx前面有代理服务器时,$remote_addr获取到的只能是nginx上一级的IP,而反向代理服务器在转发请求的http头信息中可以增加x_forwarded_for信息用以记录原有客户端的IP地址和原来客户端的请求的服务器地址,$http_x_forwarded_for参数就是承接上一级传递的客户端IP参数。从而就获取到了客户端的真实IP。

access_log 指令用来指定日志文件的存放路径,可以在http、server、location中设置

举例说明如下

access_log logs/access.log main;

如果想关闭日志可以如下

access_log off;

2、错误日志

错误日志主要记录客户端访问Nginx出错时的日志格式,不支持自定义。

由指令error_log来指定具体格式如下

error_log path(存放路径) level(日志等级)【debug | info | notice | warn | error |crit】

如果不指定路径的话默认是在logs下。

3.生产环境下常用的日志格式:

log_format main '$http_host-$http_x_forwarded_for ${request_time}s- [$time_local] "$request"'

'$status $body_bytes_sent"$http_referer" "$http_user_agent" $remote_addr ' ;

二、日志管理

1.nginx日志切割

实现思路:每天定时把日志移动到备份目录,然后重新reload或者restart。这样会在原来的logs下生成新的日志文件。(提示:当日志文件被移动到备份目录后,在没有restart的之前,nginx依然会向原来的日志文件中记录访问请求,只有等restart的之后生成了新文件,才重新记录到新的日志文件中)

实现脚本:

#!/bin/bash
#created by fuzj
  
#Log Dir
DIR_LOG="/usr/local/nginx/logs"
weblog=(
www.beyond.com
bbs.beyond.com
)
DATE=`date -d"yesterday" +"%Y%m%d"`
  
if [ ! -d"${DIR_LOG}/cut_log/${DATE}" ];then
   mkdir -p ${DIR_LOG}/cut_log/${DATE}
fi
DIR="${DIR_LOG}/cut_log/${DATE}"                                                                 
NGINX_LOG="${DIR_LOG}/current"
  
for  log in ${weblog[@]}; do
mv ${NGINX_LOG}/$log $DIR
done
  
kill -USR1 `cat /usr/local/nginx-1.2.1/logs/nginx.pid`
sleep 130
find ${DIR_LOG}/cut_log/* -typed -mtime +7 -exec rm -rf {} \;
sleep 130

2.nginx不记录某些文件或目录的访问日志

方法:先用location 定义不记录日志的文件或目录,然后在其下面用 access_log off; 进行关闭日志即可

例如:

location ~*.\checkstatus.html {

access_logoff;

}

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

原文发表时间:2016-07-26

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大前端_Web

webpack相关问题记录

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

1212
来自专栏黑泽君的专栏

vim/vi 怎么取消高亮 或 取消选中状态

在Vi里面如果要搜索某个关键字,只要在命令状态下键入/xxx就可以了,比如,我要搜索port的位置,我就键入: /port 然后回车,一个文件中,所有出现这个字...

2501
来自专栏IT笔记

Java 导入包正确依旧报错的处理方法

今天想要测试某个方法,开始打开项目的时候是没问题的,然后写了两行代码就报错了,提示本包下的要导入,然后导入无效,其实同一个包下调用是不需要导入的。 解决发方法...

4015
来自专栏令仔很忙

手把手教你---进程资源分配

Markdown编辑器用的还不是太熟,表格中插入图片这事还没学会,纠结着在Word中总结了下,然后截个图放在下面供大家参考:

2641
来自专栏smy

chrome浏览器Timing内各字段解析

Queueing 请求文件顺序的的排序 ? Stalled 是浏览器得到要发出这个请求的指令到请求可以发出的等待时间,一般是代理协商、以及等待可复用的TCP连接...

3925
来自专栏一枝花算不算浪漫

[常见问题]在Linux下执行Redis命令不起作用.

3468
来自专栏Pythonista

windows下vmware配置nat网络

1443
来自专栏电光石火

mysqldump: Got error: 2003: Can't connect to MySQL server on '127.0.0.1' (10060)

今天在用批处理进行MySQL自动备份的过程中遇到一个问题,错误提示:mysqldump: Got error: 2003: Can't connect to m...

2815
来自专栏IT可乐

Hadoop 2.7 伪分布式环境搭建

1、安装环境 ①、一台Linux CentOS6.7 系统   hostname                ipaddress              ...

2257
来自专栏王磊的博客

nodejs常用组件

mssql 用途:连接SqlServer数据库 node-excel-export 用途:导出excel表格 nodegrass 用途:模拟用户进行get/po...

3056

扫码关注云+社区

领取腾讯云代金券