CentOS上Nginx日志管理:按天保存与自动清理30天前记录

3 下载量 51 浏览量 更新于2024-08-29 收藏 59KB PDF 举报
本文主要介绍了如何在 CentOS 操作系统上配置 Nginx 服务器,以便自动管理和删除指定天数之前的访问日志记录。涉及到的站点包括 bbs.jb51.net 和 sns.jb51.net,Nginx 安装路径位于 `/usr/local/nginx`,配置文件位于 `/usr/local/nginx/conf/nginx.conf`,而各站点的配置文件分别位于 `/usr/local/nginx/conf/vhost` 目录下。目标是将两个站点的访问日志按天存储,并且仅保留最近30天的日志。 具体操作步骤如下: 1. 创建日志存放路径 首先,需要创建专门用于存放日志的目录,分别为: - 站点1日志路径:`/usr/local/nginx/logs/nginx_logs/bbs_logs` - 站点2日志路径:`/usr/local/nginx/logs/nginx_logs/sns_logs` 使用 `mkdir -p` 命令创建这些目录,确保路径存在。 2. 设置 Nginx 日志记录格式 接下来,我们需要编辑 Nginx 的主配置文件 `/usr/local/nginx/conf/nginx.conf`。在文件中找到 `log_format` 部分,取消默认的日志格式注释,或者根据需要自定义一个新的日志格式。这里已经提供了一个示例的日志格式,包括客户端 IP、用户、时间戳、请求、状态码、发送的字节数、引荐页面、用户代理以及其它相关信息。 3. 配置日志路径 在每个站点的配置文件(`bbs.jb51.net.conf` 和 `sns.jb51.net.conf`)中,指定日志文件的路径。例如,对于站点1,将日志路径设置为 `/usr/local/nginx/logs/nginx_logs/bbs_logs/access.log`,对于站点2,设置为 `/usr/local/nginx/logs/nginx_logs/sns_logs/access.log`。 4. 配置日志轮换和清理 要实现按天保存日志并删除旧日志,可以使用 `logrotate` 工具。首先,创建一个 `logrotate` 配置文件,如 `/etc/logrotate.d/nginx`,并在其中添加以下内容: ``` /usr/local/nginx/logs/nginx_logs/*.log { daily rotate 30 compress delaycompress missingok notifempty create 640 nginx nginx } ``` 这段配置表示日志每天轮换一次,保留30个旧日志文件,使用gzip压缩,延迟压缩以避免在处理时文件仍被写入,即使日志文件不存在也无错误提示,且在轮换后创建新的空日志文件,权限设为640,属主和组为`nginx`。 5. 启用并测试配置 保存并关闭所有配置文件后,使用 `nginx -t` 命令检查配置文件是否有语法错误,如果无误,使用 `nginx -s reload` 重新加载 Nginx 配置。然后,运行 `logrotate -d /etc/logrotate.d/nginx` 测试日志轮换配置,确认配置无误。 通过以上步骤,你就可以实现 Nginx 访问日志的自动管理,每天生成新的日志文件,并在30天后自动删除旧的日志文件,保持日志存储的整洁和高效。