LAMP架构(apache访问日志不记录静态文件,静态元素过期时间,apache日志切割)

一、apache访问日志不访问静态文件

浏览器打开后按f12会会出现一个界面,点network,会出现很多请求,访问日志里会记载,有些静态的图片或者文件也会记载,太浪费磁盘空间和磁盘io。所以我们要让日志不记录静态文件

[root@abc ~]# vim /usr/local/apache2.4/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

定义这些以gif.jgp,png,bmp.swf.js.css结尾的文件为env。

在CustomLog "logs/111.com-access_log" combined 这一行的最后加上env=!img,表示把除了img的文件记录到日志里。

检查语法错误并退出。


实验:

curl -x127.0.0.1:80 111.com/sadaddas.png1  

curl -x127.0.0.1:80 111.com/sadaddas.png    

访问png1和png两个文件,看看日志会记录哪个?

结果为:png不会被记录,png1会被记录,

1.png

或者上传一张以png结尾的图片在目录里,用浏览器访问,结果还是没有日志


二、apache访问日志切割


日志一直记录总有一天会把整个磁盘沾满,所以有必要让它自动切割,并删除老的日志文件。保证磁盘永远写不满,且更方便的管理日志

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

修改  ustomLog "logs/111.com-access_log" combined env=!img   为:

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_log" combined env=!img

rotatelogs是apache自带的日志切割工具。-l是为了让它以当前系统时间为准,如果不指定。他会以utc时间为基准。

而且根据时间日期还要让他文件有不同的名字。修改111.com-access_log为111.com-access%Y%m%d.log

%Y%m%d分别表示年月日.

还要规定什么时间去切割。一天是86400秒,日志名后面加上86400

检查语法错误并退出。


实验:

访问一个不是静态文件的网址内容

[root@abc ~]# curl -x127.0.0.1:80 111.com/dsd.png1    

发现日志目录里多了一个以当天时间为名的日志文件,里面记录的则是刚Curl的

[root@abc ~]# ls /usr/local/apache2.4/logs/

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

[root@abc ~]# cat /usr/local/apache2.4/logs/111.com-access20171126.log 

127.0.0.1 - - [26/Nov/2017:15:28:31 +0800] "GET HTTP://111.com/dsd.png1 HTTP/1.1" 404 206 "-" "curl/7.29.0"


三、静态元素过期时间

配置静态文件元素过期时间

浏览器访问网站图片时会把静态文件缓存在本地电脑里。这样下次访问就不用再去远程下载了。


实验:

可以在目录里放一个图片,然后用浏览器去访问,且访问之前先F12打开管理页面,点开Network

可以发现,第一次访问时,状态码为200,表示正正常

第二次访问时,状态码为304 Not Modified 表示本地有缓存,且没有修改,所以不需要从新下载。

这样可以节省带宽,但是没有规定失效日期且什么时候清理缓存。


修改:

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>

expire是apache的一个模块。设置过期时间

检查apache有没有这个模块

[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

如果没有,则需要到主配置文件里修改

搜索expire

在109行,把前面的注释符去掉

保存退出

检查语法错误并重启服务

[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

 expires_module (shared)

apache加载了这个模块。


实验:

ctrl+f5可以强制刷新,把本地缓存清空

再访问图片是状态码显示为200,且下面有cache-control,过期时间为86400秒,也就是一天,还会告诉你过期日期的时间expires,但是时区是GMT.


[root@abc 111.com]# curl -x127.0.0.1:80 111.com/1.png -I

HTTP/1.1 200 OK

Date: Sun, 26 Nov 2017 08:04:11 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Last-Modified: Sun, 26 Nov 2017 07:07:52 GMT

ETag: "7913-55edd71b4a200"

Accept-Ranges: bytes

Content-Length: 30995

Cache-Control: max-age=86400

Expires: Mon, 27 Nov 2017 08:04:11 GMT

Content-Type: image/png











本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2053108,如需转载请自行联系原作者
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/507154

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。