Nginx按天切分日志并自动备份到七牛云存储

2017-10-18

上篇文章中我曾讲到,数天前我将本站从阿里云的虚拟主机迁移到了ECS云主机上。在迁移过程中,我在安装Nginx服务器的时候遇到了一个非常典型的问题——如何将Nginx服务器的日志按日期进行切分?Nginx服务器的日志默认是存放在access_log.log和error.log两个文件中的。如果不对这两个文件进行切分处理,长此以往,这两个文件将变得非常巨大,以致影响数据的存储和分析,难以使用。所以,对这两个文件进行切分,尤其是按时间进行切分,还是非常有必要的。

其次,我国相关法律规定,“互联网信息服务提供者、互联网接入服务提供者应当记录日志信息,保存12个月”。出于网站的合规性考虑,我们需要将网站服务日志做较长时间的保留。可是ECS的自带磁盘无论是出于存储代价还是服务可靠性的考虑,都不适合这种持久性保存的应用场景,最好的处理方式还是将这些日志存放到专业的云存储服务中。鉴于七牛提供了10GB的免费存储空间和较为完善的命令行工具,而阿里云的OSS云存储多多少少仍需要付些费用,所以我最终还是决定采用七牛家的服务来做这件事情。那么,怎样才能将Nginx的日志增量备份到七牛云存储呢?

网络上关于Nginx日志按时间切分的文章很多,Google一搜一大把;而且,七牛也为Linux操作系统提供了现成的QSHELL上传工具。所以,只要对网络上的现有脚本稍加改造,便可以实现我们需要的功能。下面我简单介绍一下我是如何实现这两个功能的。 阅读全文 »