在使用 Nginx 作为 Web 服务器或反向代理时,日志文件会随着时间不断增长。如果不加以管理,这些日志可能迅速占用大量磁盘空间,甚至导致系统崩溃。本文将手把手教你如何对 Nginx 日志文件进行存储优化,即使是刚接触 Linux 和 Nginx 的小白也能轻松上手!
Nginx 默认会将访问日志(access.log)和错误日志(error.log)持续写入磁盘。如果你的网站流量较大,每天可能产生数 GB 的日志数据。长期不处理会导致:
logrotate 是 Linux 系统中广泛使用的日志管理工具,它可以自动切割、压缩、删除旧日志。这是实现 日志轮转 的最佳方式。
首先,确认你的系统已安装 logrotate(大多数 Linux 发行版默认已安装):
sudo apt install logrotate # Ubuntu/Debiansudo yum install logrotate # CentOS/RHEL
然后,为 Nginx 创建一个 logrotate 配置文件:
sudo nano /etc/logrotate.d/nginx
在文件中写入以下内容:
/var/log/nginx/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript} 配置说明:
daily:每天轮转一次日志rotate 30:保留最近30天的日志compress:使用 gzip 压缩旧日志delaycompress:延迟一天压缩,确保当天日志可读postrotate:通知 Nginx 重新打开日志文件如果你不需要详细访问日志,可以在 Nginx 配置中关闭部分日志,以节省 磁盘空间管理 成本。
编辑 Nginx 主配置文件(通常位于 /etc/nginx/nginx.conf):
# 关闭所有 server 块的访问日志http { access_log off; ...}# 或者针对特定 location 关闭location ~ /health-check { access_log off; ...} 注意:错误日志(error_log)通常建议保留,但可以调整日志级别(如只记录 warn 及以上):
error_log /var/log/nginx/error.log warn;
除了 logrotate,你也可以编写简单的 Shell 脚本配合 cron 定时任务实现 日志压缩 和清理。
#!/bin/bash# 清理30天前的 Nginx 日志find /var/log/nginx/ -name "*.log.*.gz" -mtime +30 -delete
保存为 clean_nginx_logs.sh,赋予执行权限并添加到 crontab:
chmod +x clean_nginx_logs.shcrontab -e# 添加一行(每天凌晨2点执行)0 2 * * * /path/to/clean_nginx_logs.sh
通过合理使用 logrotate、关闭非必要日志、配合自动化脚本,你可以有效控制 Nginx 日志的体积,提升系统稳定性。记住,良好的 Nginx日志优化 策略不仅能节省磁盘空间,还能让故障排查更高效!
现在就动手试试吧!你的服务器会感谢你~
本文由主机测评网于2025-11-29发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111146.html