一般状况下一个网站会有不少元素,尤为是图片、js、css等静态的文件很是多,用户每请求一个页面就会访问诸多的图片、js(javascripts)、css(Cascading Style Sheets)等静态元素,这些元素的请求都会被记录在日志中。若是一个站点访问量很大,那么访问日志文件增加会很是快,这不只会占用不少的磁盘空间,还会影响磁盘的读写速度。实际上这些巨量的静态元素请求记录到日志里的意义并不大,因此咱们每每会经过修改配置文件让这些静态元素的请求记录不写到日志文件当中javascript
192.168.254.1 - - [22/Aug/2018:03:07:12 +0800] "GET /123.jpg HTTP/1.1" 200 775702 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
vim /usr/local/apache/conf/extra/httpd-vhosts.conf
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 CustomLog "logs/111.com-access_log" combined env=!img ``` SetEnvIf 设置匹配条件 img 设置一个标记 env=!img 不记录访问带有标记img的项 虚拟主机的配置文件以下
<VirtualHost :80> DocumentRoot "/tmp/ccc.com" ServerName ccc.com ServerAlias www.ccc.com 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 ErrorLog "ccc.com_log" CustomLog "ccc.com_log" combined env=!imgcss
再次访问该网站下的123.jpg,发现记录不会被写到日志文件中。 ## 访问日志切割 为了更方便的查看和管理日志,咱们能够将日志文件切割成n多个,好比一天生成一个日志文件,这样不但容易查看和管理,还能够防止单个日志文件过大。 - 编辑配置文件 vim /usr/local/apache/conf/extra/httpd-vhosts.conf - 选中Customlog这一行进行编辑 `CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/ccc.com-access_log_%Y%m%d.log 86400" combined env=!img` /usr/local/apache/bin/rotatelogs 这是apache自带的一个日志切割功能 - -l 表示按照本机时间进行切割,若是不加-l那么表示使用UTC时间,中国使用的是CST时间 - %Y%m%d.log 表示年月日,日志切割的时候后缀名会加上年月日, 86400 表示每过86400秒就生成一个新的日志文件,86400就是一天的时间 - 配置完成后须要检查配置文件以及从新加载配置文件才会生效 /usr/local/httpd2.4/bin/apachectl -t /usr/local/httpd2.4/bin/apachectl graceful 当再次访问该网站的时候就会发现,系统生成了一个新的日志文件`ccc.com-access_log_20180821.log`
[root@localhost logs]# ls 111.com-access_log ccc.com-access_log_20180821.log dummy-host2.example.com-error_log dummy-host.example.com-error_log httpd.pid access_log dummy-host2.example.com-access_log dummy-host.example.com-access_log error_log```java
在使用浏览器浏览网页时,浏览器会把网页资料缓存(Cache)到本地,用以加快下回浏览相同网页时没必要再从新加载,提高访问速度。使用mod_expires模块来加速网页浏览,这里所谓的”加速”,实际上是利用”mod_expires”的功能,来设定网页文件的过时时间,只要网页文件的过时时间未到,浏览器就会引用缓存的资料,而不用再去加载站点上的文件,能够减小浏览者对网站的带宽占用(例若有些虚拟主机有限制网站可以使用的流量)apache
<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 hour" 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> ``` 其中使用<IfModule></IfModule>来包夹指令能够避免在mod_expires模组没有启用的状况下还要去执行.若是mod_expires模组肯定已经启用,那不写<IfModule></IfModule>也不要紧。 - ExpiresActive on: 启用mod_expires功能,相对的Off就是关闭功能 - ExpiresByType : ExpiresByType指令是依照不一样的网页文件型态来作过时时间设定 - access :过时起算时间有三种,分别是access、now 以及modification.其中access与now意义相同,而modification指的是网页文件的”最后编辑时间”.因此若是要以档桉的最 后编辑时间起算,能够写成这样,”modification plus 10 days”.而时间的指定也很简单,就是英文单字(years、months、weeks、days、hours、minutes、seconds).例 如,能够写成这样,”access plus 1 month 15 days 2 hours” - ExpiresDefault: 表示其它的设置默认。 3. 检查expire模块是否打开,若是没有打开须要在Apache主配置文件中开启 检查模块是否加载 `/usr/local/apache/bin/apachectl -M |grep expire expires_module (shared)`若是模块未加载,编辑主配置文件`vim /usr/local/apache/conf/httpd.conf` 4. 搜索关键字:,找到这一行,并删掉该行首的#:`#LoadModule expires_module modules/mod_expires.so` 1. 从新加载配置文件`/usr/local/apache/bin/apachectl graceful` - 在没有配置上述这些内容时,使用curl访问该站点反馈的内容为
[root@localhost logs]# curl -x127.0.0.1:80 ccc.com/123.jpg -I HTTP/1.1 200 OK Date: Tue, 21 Aug 2018 12:23:23 GMT Server: Apache/2.4.34 (Unix) PHP/5.6.37 Last-Modified: Tue, 14 Jul 2009 05:32:31 GMT ETag: "bd616-46ea3c3d3b9c0" Accept-Ranges: bytes Content-Length: 775702 Content-Type: image/jpegvim
- 在配置了上述的内容后,再使用curl访问该站点反馈的内容为:
[root@localhost logs]# curl -x127.0.0.1:80 ccc.com/123.jpg -I HTTP/1.1 200 OK Date: Tue, 21 Aug 2018 12:27:31 GMT Server: Apache/2.4.34 (Unix) PHP/5.6.37 Last-Modified: Tue, 14 Jul 2009 05:32:31 GMT ETag: "bd616-46ea3c3d3b9c0" Accept-Ranges: bytes Content-Length: 775702 Cache-Control: max-age=86400 多了一行元素过时时间86400秒 Expires: Wed, 22 Aug 2018 12:27:31 GMT Content-Type: image/jpeg浏览器