42.访问日志不记录静态文件及切割 静态元素过期时间

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

11.23 访问日志切割

11.24 静态元素过期时间

扩展 

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

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

apache日志记录客户端请求的域名 http://ask.apele...

 

 

 

11.22 访问日志不记录静态文件:

 

访问网站的元素都有哪些,谷歌浏览器的话按F12。我们在访问一个页面的时候,他其实加载了很多的元素,如下图

其中每一行都是一个请求,每一行都有一个地址,这就是一个请求,这些请求就会记录日志而且我们主要就是看这些。

但是其中网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录

把虚拟主机配置文件改成如下(相当于定义了一个环境):

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.com

ServerAlias 123.com

SetEnvIf Request_URI ".*\.gif$" img 正则,就是符合.gif的为img(可随便写,不一定非得是img)。 凡是以下这几种请求的都叫 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 在这一行(Custonlog)上面加入。

env=!img 我们上面定义的img,凡是符合定义的img的不会记录到这里 !是取反的意思。

</VirtualHost>

重新加载配置文件 -t, graceful

mkdir /data/wwwroot/111.com/images 创建目录,并在这目录下上传一个图片

curl -x127.0.0.1:80 -I 111.com/images/123.jpg

tail /usr/local/apache2.4/logs/123.com-access_log

 

 

实例:

[root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

ErrorLog "111.com-error_log"

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

</VirtualHost>

[root@localhost ~]# cd /data/wwwroot/111.com/images

[root@localhost images]# rz

[root@localhost images]# ls

360截图1.jpg 

[root@localhost images]# mv 360截图1.jpg  abc.jpg

[root@localhost images]# ls

abc.jpg

[root@localhost images]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK

[root@localhost images]# /usr/local/apache2.4/bin/apachectl graceful

httpd not running, trying to start

[root@localhost images]# curl -x127.0.0.1:80 -I 111.com/images/abc.jpg  我们测试abc.jpg,成功

curl -x192.168.30.133:80 -I 111.com/images/abc.jpg  测试失败,不知原因。

HTTP/1.1 200 OK
Date: Fri, 19 Jul 2019 02:30:53 GMT
Server: Apache/2.4.39 (Unix) PHP/5.6.32
Last-Modified: Wed, 17 Jul 2019 07:48:52 GMT
ETag: "f09b-58ddbb96f8100"
Accept-Ranges: bytes
Content-Length: 61595
Content-Type: image/jpeg

 

[root@localhost 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log 这里却没有显示我们测试的访问记录

192.168.30.1 - - [18/Jul/2019:17:04:33 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.30.1 - - [18/Jul/2019:17:23:41 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [18/Jul/2019:17:23:41 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [18/Jul/2019:17:23:44 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.30.1 - - [18/Jul/2019:17:24:03 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [18/Jul/2019:17:24:14 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:27 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:27 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:27 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:31 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

11.23 访问日志切割:

 

 

 

日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件

把虚拟主机配置文件改成如下:

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.com

ServerAlias 123.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 以上我们不用动

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img 只需要在这一行加入 红色部分(rotatelogs是Apache自带的切割工具)

-l是让他以当前系统的时间为基准(时区。我们中国是CST,默认是美国UTC)data命令可以看到

%Y%m%d.log定义变量,也及时切割后的名字以我们设置的变量(年月日)来命名

86400 就是86400秒。定义每天切割,也就是86400秒

</VirtualHost>

重新加载配置文件 -t, graceful

curl -x192.168.30.133 111.com -I 访问才会生成

HTTP/1.1 200 OK
Date: Fri, 19 Jul 2019 03:30:20 GMT
Server: Apache/2.4.39 (Unix) PHP/5.6.32
X-Powered-By: PHP/5.6.32
Content-Type: text/html; charset=UTF-8

ls /usr/local/apache2.4/logs

111.com-access_20190719.log  111.com-access_log  111.com-error_log  abc.com-access_log  abc.com-error_log  access_log  error_log  httpd.pid

注意:我们仅仅只是让他每日切割。还需要做一个任务计划,让他每日删除,只保留这一个

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

11.24 静态元素过期时间:

 

 

 

我们在访问网站的时候,比如一些图片会自动下载到我们的电脑里,下次在访问的时候就不用再去服务器下载了。但这些缓存的文件是根据我们浏览器的设定来决定时间清理的,或者是电脑管家帮我们清理

如果我们再次访问这个图片,浏览器检测到这个图片没有更改跟我们本地缓存的一样,就不会再次下载,就会显示状态码304,

这样对于服务器是好的,可以节省带宽。但是没有定义什么时候过期,万一我们对这个图片做了更改呢,这就需要我们设置静态元素的过期时间:

 

增加配置

<IfModule mod_expires.c> 用到expires模块

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>

需要expires_module 主配置文件,搜索expires,将这个模块打开(注释去掉)

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

-t graceful

curl测试,看cache-control: max-age

 

 

 

实例:

[root@localhost wwwroot]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

[root@localhost wwwroot]# /usr/local/apache2.4/bin/apachectl -M | grep expires 显示没有打开

[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so 把expires模块注释去掉

[root@localhost ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@localhost ~]# /usr/local/apache2/bin/apachectl graceful

[root@localhost ~]# curl -x192.168.30.133:80 111.com/abc.jpg -I

HTTP/1.1 200 OK
Date: Fri, 19 Jul 2019 06:37:49 GMT
Server: Apache/2.4.39 (Unix) PHP/5.6.32
Last-Modified: Wed, 17 Jul 2019 07:48:52 GMT
ETag: "f09b-58ddbb96f8100"
Accept-Ranges: bytes
Content-Length: 61595
Cache-Control: max-age=86400 刚设置,生效。
Expires: Sat, 20 Jul 2019 06:37:49 GMT
Content-Type: image/jpeg

 

 

转载于:https://my.oschina.net/u/3866192/blog/3075888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值