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;

}

时间: 2025-01-17 22:33:55

Nginx日志管理和切割的相关文章

Linux下添加shell脚本使得nginx日志每天定时切割压缩

Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志,还是使用"GoAccess"等工具对日志进行分析都将会变得非常麻烦.因此,每天定时对nginx日志进行切割压缩就非常有必要了 二 实现 我的实现思路是每天晚上接近12点时定时执行脚本.其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的ngi

Linux系统中nginx日志每天定时切割实现方法详解

本文和大家分享的是使用Linux中自带的命令logrotate对Nginx日志进行切割相关实现方法,希望帮助大家更好的学习linux系统. Nginx安装目录:/usr/local/nginx/ Nginx日志目录:/usr/local/nginx/logs/./usr/local/nginx/logs/nginx_logs/ 1.添加nginx日志切割脚本 cd /etc/logrotate.d #进入目录 vi /etc/logrotate.d/nginx #编辑脚本 /usr/local/

Nginx日志轮询切割

Nginx日志轮询切割 默认情况下,Nginx会把所有的访问日志生成到一个指定的访问日志文件access*.log里,但这样一来,时间长了就会导致日志单个文件很大,不利于日志的分析和处理,因此有必要对Nginx日志按天或者按小时等进行分割,具体要看具体线上业务,使其分成不同的文件保存.这里我们按天进行切割日志. 1.配置日志切割脚本,具体如下: [[email protected] ~]# mkdir -p /server/scripts/ [[email protected] ~]# cd /

04 nginx日志管理

一:nginx日志管理 我们观察nginx的server段,可以看到如下类似信息 #access_log logs/host.access.log main; 这说明 该server, 它的访问日志的文件是 logs/host.access.log , 使用的格式”main”格式. 除了main格式,你可以自定义其他格式. main格式是什么? log_format main '$remote_addr - $remote_user [$time_local] "$request" '

nginx之旅(第二篇):nginx日志管理、nginx防盗链、nginx虚拟主机

一.nginx日志管理 Nginx访问日志主要有两个参数控制 1) log_format #用来定义记录日志的格式(可以定义多种日志格式,取不不同名字即可) log_format log_name string 2) access_log #用来指定日至文件的路路径及使用的何种日志格式记录日志 access_log logs/access.log main; log_format格式变量含义: 字段 含义 remote_addr 客户端地址 remote_user 客户端用户名 time_loc

Nginx教程(三) 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根目录lo

Nginx日志文件格式及切割日志文件

作为web服务器而言,日志是必不可少的也是需要经常查看的.此篇就来介绍下如何自定义Nginx中的日志格式以及使用crontab计划任务来做到每天切割一次日志文件从而做到方便管理. 在Nginx中日志文件是由log_format这个指令来定义的,它的语法如下: log_format    name    format ##    name:指的是日志格式的名称(后面调用) ##    format:设置日志具体格式的 在Nginx中有自己默认的日志格式,如下内容:     #log_format 

nginx 日志管理

日志管理 我们观察nginx的server段,可以看到如下类似信息 #access_log  logs/host.access.log  main; 这说明 该server, 它的访问日志的文件是  logs/host.access.log , 使用的格式"main"格式. 除了main格式,你可以自定义其他格式. main格式是什么? log_format  main  '$remote_addr - $remote_user [$time_local] "$request

Nginx日志管理

以下是Nginx日志的一个server段的配置,其中的access_log便是标记Nginx日志目录,紧随其后的main是日志格式 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } 从配置文件的还可以看到具体main日志格式的定义,当然 ,我们