LAMP架构(六)

一 访问日志不记录静态文件

使用场景:一个网页的很多静态图片、css/js文件,如果记录到日志中会使日志特别大,但这些图片文件等属于静态文件,没有记录的必要,因此我们可以修改配置文件设置不记录指定的类型的访问日志;我们日常需要的是看用户访问过哪些页面,而不是看这些页面的哪些图片

1、修改虚拟主机配置文件

    # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    在文件中CustomLog行上方加入以下内容:

    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
    

上面命令中引号内容是正则表达式,img属于前述内容的标记

再在CustomLog行末尾加入内容env=!img  ,表示只要符合上面条件的请求都不会记录到日志里

2、重新加载配置文件

    在重新加载前,配置文件还未生效,我们先来实验看下

    从上图我们可以看到在未配置的情况下,默认是会记录jpg文件的访问日志的

下面我们来加载更新后的配置文件

    # /usr/local/apache2.4/bin/apachectl -t

    # /usr/local/apache2.4/bin/apachectl graceful

此时再来测试

上图可以看到并未增加新的日志记录

当然上面实验的图片并非真实存在的,我们也可以放一张真实存在的图片来访问实验,从本机传输huawei.jpg

现在我们再来访问新放进来的这张图片,发现并没有记录日志

二 访问日志切割

目的:一般情况下,都应该对日志做切割,一方面是防止日志写满磁盘,二是让我们更方便的管理日志,需要配合日志过期时间使用

1、编辑配置文件

    # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    加入下图框中的内容

    |/usr/local/apache2.4/bin/rotatelogs  指定日志切割工具,rotatelogs这个工具是apache2.4自带的日志切割工具

    -l  表示以系统的时间为准,如果不指定,它就会以UTC/CST(美国时间/中国时间)格式的时间为基准

    %Y%m%d 表示年月日

    86400 表示切割间隔时间为86400s,即1分钟

2、重新加载配置文件

    # /usr/local/apache2.4/bin/apachectl -t
    # /usr/local/apache2.4/bin/apachectl graceful

3、访问查看下

    

    从上图可以看到,在经过一次访问后,logs目录下新增了一个以今天时间命名的日志文件,其内容就是

刚才访问留下的日志

三 静态元素过期时间

设置静态元素过期时间后,当用户访问某个静态元素超过一定时间,浏览器就会自动将下载到本地的这些静态元素清空,如果不设置,可能不会清空,或者浏览器按照自己的设定来清空

    先来做个小测试:

    浏览器第一次访问下图连接,返回状态码为200 OK

    浏览器第二次访问同一连接,返回状态码为304 Modified没有修改,它表示浏览器检测到所访问的这个图片从下载后到现在没有修改过,因此不需要从服务器重新下载

1、增加配置

    在虚拟主机配置文件中加入以下内容:

    <IfModule mod_expires.c>
        ExpiresActive on
        ExpiresByType image/gif "access plus 1 days"
        ExpiresByType image/jpeg "access plus 24 hours"
        ExpiresByType image/png "access plus 24 hours"
        ExpiresByType text/css "now plus 2 hours"
        ExpiresByType application/x-javascript "now plus 2 hours"
        ExpiresByType application/javascript "now plus 2 hours"
        ExpiresByType application/x-shockwave-flash "now plus 2 hours"
        ExpiresDefault "now plus 0 min"
    </IfModule>

ExpiresActive on表示打开此功能

ExpiresByType表示类型

ExpiresDefault表示其他类型文件的过期时间

now plus 0 min表示不过期或者不理会过期时间

2、检测配置文件语法错误

    # /usr/local/apache2.4/bin/apachectl -t

3、查看expire模块是否开启

    # /usr/local/apache2.4/bin/apachectl -M |grep expire

上图表示没有打开,此时需要编辑主配置文件打开expire模块

    # vim /usr/local/apache2.4/conf/httpd.conf

去掉expires模块前面的#号,如下

重新加载配置文件

# /usr/local/apache2.4/bin/apachectl graceful

再来查看expire模块已经开启

4、验证

    刷新原来的网页,可以看到状态码为200 O,K,缓存保留时间为1天,过期时间,

    再次刷新网页,状态码及过期时间发生了变化,缓存保留时间还是1天

推荐链接

apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960

apache只记录指定URI的日志 http://ask.apelearn.com/question/981

apache日志记录客户端请求的域名 http://ask.apelearn.com/question/1037

apache 日志切割问题 http://ask.apelearn.com/question/566

猜你喜欢

转载自my.oschina.net/u/3746774/blog/1629687