宝塔面板中Nginx日志按天分割需启用内置切割功能、手动配置logrotate规则、添加计划任务强制执行,并验证归档效果。

如果您在宝塔面板中运行Nginx服务,但发现访问日志持续增长且未自动切割,可能导致磁盘空间被快速占满。以下是实现Nginx日志按天分割并自动归档的具体操作步骤:
一、启用宝塔内置日志切割功能
宝塔面板自带日志切割模块,可对站点Nginx日志执行定时轮转,无需手动编写脚本。该功能依赖于面板后台的计划任务与logrotate机制协同工作。
1、登录宝塔面板,在左侧菜单栏点击网站,进入站点列表页面。
2、找到目标站点,点击其右侧设置按钮。
3、在站点设置页面中,切换至日志选项卡。
4、勾选启用日志切割复选框,并确认切割周期为每天。
5、点击保存按钮,系统将自动创建对应站点的logrotate配置文件并启用定时任务。
二、手动配置logrotate规则文件
当内置功能无法满足自定义需求(如压缩归档、保留天数调整、多目录匹配)时,可通过直接编辑logrotate配置实现精细控制。
1、使用宝塔文件管理器或SSH连接服务器,打开路径/www/server/panel/vhost/logrotate。
2、在此目录下新建一个以站点域名命名的配置文件,例如example.com。
3、在文件中写入以下内容:
4、/www/wwwroot/example.com/*.log {
5、daily
6、missingok
7、rotate 30
8、compress
9、delaycompress
10、notifempty
11、create 644 www www
12、sharedscripts
13、postrotate
14、if [ -f /www/server/nginx/logs/nginx.pid ]; then
15、kill -USR1 `cat /www/server/nginx/logs/nginx.pid`
16、fi
17、endscript
18、}
三、配置独立计划任务触发logrotate
若logrotate未随系统默认cron运行,或需确保在特定时间执行,可手动添加宝塔计划任务强制调用。
1、在宝塔面板左侧菜单中点击计划任务。
2、点击添加计划任务按钮。
3、任务类型选择Shell脚本。
4、任务名称填写强制执行Nginx日志切割。
5、执行周期设为每天 00:00。
6、脚本内容输入:/usr/sbin/logrotate -f /etc/logrotate.d/bt_nginx。
7、点击添加任务,系统将按时执行日志轮转指令。
四、验证日志分割效果
配置完成后需检查日志是否按预期生成新文件并完成归档,避免因权限或路径错误导致切割失败。
1、等待至次日凌晨或手动触发一次计划任务。
2、进入站点日志目录:/www/wwwroot/example.com/logs/。
3、确认存在形如access.log-20240520.gz的压缩归档文件。
4、检查当前access.log文件大小是否已重置为较小值(通常为0或几KB)。
5、查看/var/log/messages或运行logrotate -d /etc/logrotate.d/bt_nginx进行调试输出验证。










