服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - nginx访问日志并删除指定天数前的日志记录配置方法

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

2019-10-17 11:46nginx配置网 Nginx

这篇文章主要介绍了nginx访问日志并删除指定天数前的日志记录配置方法,需要的朋友可以参考下

说明:

操作系统:CentOS

站点1:www.zzvips.com

站点2:hao.zzvips.com

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

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

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

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

目的:

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

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

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

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

具体操作:

1、创建日志存放路径

复制代码代码如下:

mkdir -p  /usr/local/nginx/logs/nginx_logs/www_logs
mkdir -p  /usr/local/nginx/logs/nginx_logs/hao_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/www.zzvips.com.conf  #,在www.zzvips.com;这一行下面添加

复制代码代码如下:

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


:wq!  #保存退出

 

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

复制代码代码如下:

access_log  logs/hao_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}www_access.log  ${logs_path}nginx_logs/www_logs/www_access_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}hao_access.log  ${logs_path}nginx_logs/hao_logs/hao_access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
find ${logs_path}nginx_logs/www_logs/  -name "www_access_*" -type f -mtime +$DAYS -exec rm {} \;
find ${logs_path}nginx_logs/hao_logs/  -name "hao_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/www_logs和/usr/local/nginx/logs/nginx_logs/hao_logs

目录下生成类似www_access_20140126.log和www_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

 

延伸 · 阅读

精彩推荐
  • Nginx如何优化Nginx的处理性能

    如何优化Nginx的处理性能

    Nginx是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,...

    Dockone.io5142020-12-11
  • NginxNginx location 和 proxy_pass路径配置问题小结

    Nginx location 和 proxy_pass路径配置问题小结

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程,本文给大家介绍Nginx location 基本配置及相关配...

    自由早晚乱余生18742021-09-24
  • Nginx利用nginx和腾讯云免费证书制作https的方法

    利用nginx和腾讯云免费证书制作https的方法

    这篇文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    dalaoyang5992019-12-30
  • Nginxnginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 ...

    mrr4272019-11-19
  • Nginxnginx rewrite 伪静态配置参数和使用例子

    nginx rewrite 伪静态配置参数和使用例子

    nginx下伪静态配置参数详细说明,使用nginx的朋友,nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 ...

    服务器之家3102019-10-08
  • NginxNginx Rewrite使用场景及代码案例详解

    Nginx Rewrite使用场景及代码案例详解

    这篇文章主要介绍了Nginx Rewrite使用场景及代码案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    盗哥泡茶去了11862020-09-27
  • Nginx通过Nginx规则重写URL去掉index.php不显示index.php

    通过Nginx规则重写URL去掉index.php不显示index.php

    Nginx不仅占用内存少,并发能力强,而且拓展功能丰富,可以通过安装模板来强化功能,也能通过规则优化,优化服务器并发处理能力,是建站的不二之选...

    Genius日记5872020-10-16
  • NginxNginx动静分离实现案例代码解析

    Nginx动静分离实现案例代码解析

    这篇文章主要介绍了Nginx动静分离实现案例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了3382020-09-27