4324234 发表于 2017-1-9 16:30:06

nginx日志不记录及日志切割

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server
{
    listen      80;
    server_name www.test.comwww.123.com;
    index       index.html index.htm index.php;
    root      /data/www;
    access_log/tmp/logs/access_logtest;   #开启日志
    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_logoff;
      
    }

    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;
    }

}




创建日志所在的位置:

1
mkdir /tmp/logs




重新加载配置文件后,访问论坛,会发现,日志种并没有以上述后缀结尾图片的访问记录!
日志切割:
nginx并没有像apapche中logrotate那样的切割工具,因此我们需要自己写一个!脚本如下:

1
2
3
4
5
6
7
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计划任务即可!

页: [1]
查看完整版本: nginx日志不记录及日志切割