在nginx的访问日志种,我们可以发现好多图片的访问的日志,这些东西并没有什么作用,我们可以设置让nginx不记录对这些东西的访问:

我们可以单独记录这个虚拟机服务器的日志,在nginx的配置文件种,我们已经设置日志格式别名为“test”可以根据自己的需求定义的格式:

server
{
    listen      80;
    server_name www.test.com  www.123.com;
    index       index.html index.htm index.php;
    root        /data/www;
    access_log  /tmp/logs/access_log  test;   #开启日志
    if ($host != 'www.test.com') {
        rewrite ^/(.*)$ http://www.test.com/$1 permanent;
    }


    location ~ .*forum\.php$ {

        auth_basic             "auth";
        auth_basic_user_file  /usr/local/nginx/conf/htpasswd;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
    }
    
    location ~ .*\.(gif|jpg|png|jpeg|bmp|swf)$ {         #不记录对这些东西的访问
        access_log  off;
      
    }

    location ~ \.php$ { 
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
    }

}

创建日志所在的位置:

mkdir /tmp/logs

重新加载配置文件后,访问论坛,会发现,日志种并没有以上述后缀结尾图片的访问记录!

日志切割:

nginx并没有像apapche中logrotate那样的切割工具,因此我们需要自己写一个!脚本如下:

cat nginx_logrotate.sh
#!/bin/bash
#nginx访问日志切割
d=`date -d "-1 day" +%F`
mv /tmp/logs/access_log  /tmp/logs/$d.log #更改日志的名字
/etc/init.d/nginx reload > /dev/null     #重新加载配置文件,以便生成新的日志
gzip -f /tmp/logs/$d.log      #若日志太大,还可以压缩,-f强制压缩

把上面的脚本执行,然后把执行脚本的命令写入cornt计划任务即可!