源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-04-09 20:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:nginx访问日志并删除指定天数前的日志记录配置方法
说明: 操作系统:CentOS 站点1:bbs.jb51.net 站点2:sns.jb51.net Nginx安装路径:/usr/local/nginx Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf 站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs.jb51.net.conf 站点2配置文件路径:/usr/local/nginx/conf/vhost/sns.jb51.net.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、创建日志存放路径
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
取消日志记录格式前面的注释,在最后添加一行,如下所示:
[u]复制代码[/u] 代码如下:
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.jb51.net.conf  #,在bbs.jb51.net;这一行下面添加
[u]复制代码[/u] 代码如下:
access_log  logs/bbs_access.log  main;  #注意这里的main要和上一步中的main一致
:wq!  #保存退出 编辑vi /usr/local/nginx/conf/vhost/sns.jb51.net.conf ,在sns.jb51.net;这一行下面添加
[u]复制代码[/u] 代码如下:
access_log  logs/sns_access.log  main;  #注意这里的main要和上一步中的main一致
[u]复制代码[/u] 代码如下:
:wq!  #保存退出 service nginx reload  #重新加载nginx配置文件
4、创建Nginx日志切割脚本 编辑vi /home/crontab/cut_nginx_log.sh
[u]复制代码[/u] 代码如下:
#!/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 {} \;
[u]复制代码[/u] 代码如下:
:wq!  #保存退出 chmod +x /home/crontab/cut_nginx_log.sh  #添加脚本执行权限
5、添加任务计划,修改/etc/crontab vi /etc/crontab在最后一行添加
[u]复制代码[/u] 代码如下:
0 0 * * * root /home/crontab/cut_nginx_log.sh  #表示每天凌晨执行
:wq!  #保存退出 6、重新启动crond使设置生效
[u]复制代码[/u] 代码如下:
/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访问日志并删除指定天数前的日志记录完成。 备注:如果脚本在执行过程中出现下面错误
[u]复制代码[/u] 代码如下:
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed
解决办法:
[u]复制代码[/u] 代码如下:
/usr/local/nginx/sbin/nginx -c  /usr/local/nginx/conf/nginx.conf #使用nginx -c的参数指定nginx.conf文件的位置
扩展阅读:Nginx访问日志参数说明
[u]复制代码[/u] 代码如下:
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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部