当前位置:  操作系统/服务器>linux

nginx访问日志并删除指定天数前的日志记录配置方法

    来源: 互联网  发布时间:2014-08-25

    本文导语:  说明: 操作系统:CentOS 站点1:bbs. 站点2:sns. Nginx安装路径:/usr/local/nginx Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf 站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs..conf 站点2配置文件路径:/usr/local/nginx/conf/vhost/sns..conf 目的...

说明:

操作系统:CentOS

站点1:bbs.

站点2:sns.

Nginx安装路径:/usr/local/nginx

Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf

站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs..conf

站点2配置文件路径:/usr/local/nginx/conf/vhost/sns..conf

目的:

1、对站点1和站点2的nginx访问日志按天保存,日志路径为:

站点1:/usr/local/nginx/logs/nginx_logs/bbs_logs

站点2:/usr/local/nginx/logs/nginx_logs/sns_logs

2、只保留30天以内的日志记录

具体操作:

1、创建日志存放路径

代码如下:

mkdir -p  /usr/local/nginx/logs/nginx_logs/bbs_logs
mkdir -p  /usr/local/nginx/logs/nginx_logs/sns_logs

2、设置Nginx日志记录格式

编辑vi /usr/local/nginx/conf/nginx.conf

代码如下:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

取消日志记录格式前面的注释,在最后添加一行,如下所示:

代码如下:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$http_host $upstream_status $upstream_addr $request_time $upstream_response_time';  #新添加的一行

:wq!  #保存退出

3、设置虚拟主机配置文件

编辑vi /usr/local/nginx/conf/vhost/bbs..conf  #,在bbs.;这一行下面添加

代码如下:

access_log  logs/bbs_access.log  main;  #注意这里的main要和上一步中的main一致

:wq!  #保存退出

编辑vi /usr/local/nginx/conf/vhost/sns..conf ,在sns.;这一行下面添加

代码如下:

access_log  logs/sns_access.log  main;  #注意这里的main要和上一步中的main一致

代码如下:

:wq!  #保存退出
service nginx reload  #重新加载nginx配置文件

4、创建Nginx日志切割脚本

编辑vi /home/crontab/cut_nginx_log.sh

代码如下:

#!/bin/sh
logs_path="/usr/local/nginx/logs/"
DAYS=30
mv ${logs_path}bbs_access.log  ${logs_path}nginx_logs/bbs_logs/bbs_access_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}sns_access.log  ${logs_path}nginx_logs/sns_logs/sns_access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
find ${logs_path}nginx_logs/bbs_logs/  -name "bbs_access_*" -type f -mtime +$DAYS -exec rm {} ;
find ${logs_path}nginx_logs/sns_logs/  -name "sns_access_*" -type f -mtime +$DAYS -exec rm {} ;

代码如下:

:wq!  #保存退出
chmod +x /home/crontab/cut_nginx_log.sh  #添加脚本执行权限

5、添加任务计划,修改/etc/crontab

vi /etc/crontab在最后一行添加

代码如下:

0 0 * * * root /home/crontab/cut_nginx_log.sh  #表示每天凌晨执行

:wq!  #保存退出

6、重新启动crond使设置生效

代码如下:

/etc/rc.d/init.d/crond restart   #yum install -y vixie-cron安装计划任务,某些系统上可能没有预装
chkconfig crond on #设为开机启动
service crond start #启动

每天会在/usr/local/nginx/logs/nginx_logs/bbs_logs和/usr/local/nginx/logs/nginx_logs/sns_logs

目录下生成类似bbs_access_20140126.log和bbs_access_20140126.log的日志文件

并且只保留最近30天的日志记录

至此,Linux下定时切割Nginx访问日志并删除指定天数前的日志记录完成。

备注:如果脚本在执行过程中出现下面错误

代码如下:

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed

解决办法:

代码如下:

/usr/local/nginx/sbin/nginx -c  /usr/local/nginx/conf/nginx.conf
#使用nginx -c的参数指定nginx.conf文件的位置

扩展阅读:Nginx访问日志参数说明

代码如下:

192.168.21.1 - - [27/Jan/2014:11:28:53 +0800] "GET /2.php HTTP/1.1" 200 133 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1707.0 Safari/537.36" "-"192.168.21.128 200 127.0.0.1:9000 0.119 0.119

$remote_addr:客户端地址  192.168.21.1

$remote_user:客户端用户 -

$time_local:时间和时区   27/Jan/2014:11:28:53 +0800

$request:请求的URL路径和HTTP协议   GET /2.php HTTP/1.1

$status: HTTP状态  200

$body_bytes_sent:发送给客户端页面大小  133

$http_referer:页面跳转来源 -

$http_user_agent:用户访问终端  Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1707.0 Safari/537.36

$http_x_forwarded_for:HTTP 代理中,请求端真实IP -

$http_host:用户在浏览器中输入的URL(IP或着域名)地址  192.168.21.128

$upstream_status: upstream状态    200

$upstream_addr: 后端upstream地址及端口  127.0.0.1:9000

$request_time: 页面访问总时间  0.119

$upstream_response_time:页面访问中upstream响应时间   0.119


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • nginx中文件下载指定保存文件名的配置方法
  • nginx 服务器介绍
  • 实时 Nginx 分析和诊断工具 nginx-systemtap-toolkit
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • Nginx的TFS模块 nginx-tfs
  • nginx Windows版相关问题及使用说明
  • 重启或杀掉Nginx进程后丢失nginx.pid的解决办法
  • nginx最新主线开发版1.5.4发布及下载地址
  • Nginx 令牌模块 nginx-token
  • nginx最新稳定版1.4.2发布
  • Nginx文件上传模块 nginx-upload-module
  • linux/centos源码安装nginx编译配置选项参数介绍
  • Nginx 负载均衡模块 nginx-upstream-fair
  • nginx服务器基本特性及使用技巧
  • HTML教程 iis7站长之家
  • linux/centos下安装nginx(rpm安装和源码安装)详细步骤
  • NGINX的流媒体插件 nginx-rtmp-module
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • nginx安装(1) ttlsa教程系列之nginx
  • linux/centos安装nginx常见错误及解决办法
  • 重启nginx后丢失nginx.pid的解决方法
  • nginx中使用nginx-http-concat模块合并静态资源文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3