nginx访问日志文件过大的解决方案


今天大早上一个哥们儿就跑来说网站卡的要死,mysql经常卡死。

df -h 一看  分区空间全部占满了.

访问日志太大了,增涨的速度相当吓人.

处理方案:

修改nginx的配置文件,access_log,访问日志只记录phpfile.html' target='_blank'>文件类型的

对于html,和图片,css,js等文件的访问都不记录.

加一个crontab任务,定期清空日志内容。

具体实施过程:

1. 查找nginx的安装路径  默认是/usr/local/nginx/

目录下会有 conf  logs  sbin 等目录

#cd /usr/local/nginx

#cd  conf/vhost   //此目录下存放着各站点的配置文件

#vim  linuxso.com.conf

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires      30d;
access_log off;   //添加这一行 将不记录这些文件类型
}


location ~ .*\.(js|css)?$
{
expires      12h;
access_log off;   //也不让记录
}



location ~ .*\.(html|htm)$    //这部分原来是没有的,我们只记录访问php文件就可以了。
{
access_log off;
}
然后看最下面一行  access_log  /var/log/linuxso.log  /var/www/linuxso;
记录下来  /var/log/linuxso.log   日志存放的路径 后面写定期清空日志脚本时要用。
修改完成可以执行  /usr/local/nginx/sbin/nginx -s reload 可以重启nginx
这样修改完,日志的增长速度会明显慢下来,不过仍然是不断变大,也终有把空间占满的一天。

2.写一个简单的脚本定期清空日志。

# vim /root/cleanlog.sh
写入

#/bin/bash
/bin/rm -rf /var/log/linuxso.log
/usr/local/nginx/sbin/nginx -s reload

#crontab -e

0 0  * * * /root/cleanlog.sh   //我这是每天夜里12点清空一次,根据你的情况设置清空的频率。