Apache access_log过大及日志轮转异常求助(Bitnami LAMP/AWS Lightsail)
解决方案
1. 封禁恶意请求IP(优先处理)
这是日志暴涨的核心原因,直接阻断该IP的请求:
- 用Apache配置封禁:编辑Apache主配置文件
/opt/bitnami/apache2/conf/httpd.conf或对应虚拟主机配置,添加:
重启Apache生效:<Location "/images/items_thumbs/"> Require not ip xx.xx.xx.xxx Require all granted </Location>sudo /opt/bitnami/ctlscript.sh restart apache - 用iptables高效封禁(更节省资源):
这条规则会直接丢弃该IP的所有请求,比Apache层面封禁更高效。sudo iptables -A INPUT -s xx.xx.xx.xxx -j DROP sudo iptables-save > /etc/iptables/rules.v4
2. 修复logrotate每小时轮转问题
移到cron.hourly没生效,大概率是配置文件里的周期没改,或者缺少关键参数:
- 编辑Apache的logrotate配置文件(通常在
/etc/logrotate.d/bitnami-apache或手动创建),写入:/opt/bitnami/apache2/logs/access_log { hourly missingok rotate 24 # 保留24小时的日志 compress delaycompress copytruncate # 关键:避免Apache重启,防止大文件轮转崩溃 notifempty maxsize 100M # 额外保险:日志到100MB就强制轮转 } - 确保cron.hourly里的logrotate脚本有执行权限:
手动测试轮转:sudo chmod 755 /etc/cron.hourly/logrotatesudo logrotate -f /etc/logrotate.d/bitnami-apache
3. 安全关闭access_log(可选)
如果不需要access_log,直接注释掉Apache里的日志指令:
- 编辑
/opt/bitnami/apache2/conf/httpd.conf,找到所有CustomLog指令,注释掉:# CustomLog "/opt/bitnami/apache2/logs/access_log" common - 检查虚拟主机配置(比如
/opt/bitnami/apache2/conf/vhosts/your-site.conf),如果有CustomLog也一并注释。 - 重启Apache生效:
sudo /opt/bitnami/ctlscript.sh restart apache
4. 避免日志轮转崩溃的额外注意事项
- 必须在logrotate配置中加入
copytruncate,它会先复制日志内容到新文件,再截断原文件,不需要Apache重新打开日志句柄,避免大文件轮转时资源耗尽。 - 若日志已过大,可先临时截断应急:
sudo truncate -s 0 /opt/bitnami/apache2/logs/access_log
内容的提问来源于stack exchange,提问作者Pi31
相关产品推荐
相关产品推荐

