Linux学习总结(三十五)lamp之访问日志配置

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

网站大多元素为静态文件,如图片、css、js等,记录这些访问信息对我们运维工作没有多大意义,如果一个站点访问量很大,那么一天就可以达到几GB。影响我们磁盘的工作效率,那么我们就可以配置虚拟主机限制记录这些信息。
把虚拟主机配置文件改成如下:

 <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.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 "logs/123.com-access_log" combined env=!img
</VirtualHost>

重新加载配置文件 -t, graceful
mkdir /data/wwwroot/www.123.com/images //创建目录,并在这目录下上传一个图片
curl -x127.0.0.1:80 -I 123.com/images/123.jpg
curl -x127.0.0.1:80 -I 123.com/345..php
我们分别访问一个图片和一个php网页,然后 tail /usr/local/apache2.4/logs/123.com-access_log 查看日志,会发现只记录了访问345.php的信息,而没有记录访问图片的信息。这里直接起作用的语句为env=!img 其中!为取反的意思,指除过我们定义的request ,其他的都记录。

二 访问日志切割

日志一直记录总有一天会把整个磁盘占满,而且单个日志文件也不利于我们定位故障,所以有必要让它自动切割,并删除老的日志文件
把虚拟主机配置文件改成如下:

 <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.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/123.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>

重新加载配置文件 -t, graceful
ls /usr/local/apache2.4/logs

这里我们发现多了一个带日期的日志文件,该文件就是我们上面配置后对访问日志切割的结果,其中rotatelos为httpd自带的日志切割工具,它会把访问日志按照我们定义的格式进行切割,其中86400单位是秒,相当于一天。

三 配置静态元素访问过期时间

浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了。但是到底能缓存多久呢,如果服务器上的图片更改了,那么应该访问新的图片才对。这就涉及到静态文件缓存时长的问题,也叫做缓存过期时间。这个时间我们可以在虚拟主机配置文件中配置。
我们在刚才的访问日志配置语句下面增加如下配置模块

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

注意该配置 需要expires_module,需要在httpd住配置文件中打开该功能。也就是在/usr/lcoal/apache2.4/conf/httpd.conf 中搜索 expires_module,删除前面的#号
curl测试,看cache-control: max-age

原文地址:http://blog.51cto.com/12606610/2104173

时间: 2024-08-01 21:26:07

Linux学习总结(三十五)lamp之访问日志配置的相关文章

Linux学习总结(四十一)nginx 访问日志配置,网页缓存有效期配置

我们在学些apache的时候已经接触过访问日志,还记得日志格式在哪里定义吗,在httpd的主配置文件中,/usr/lcoal/apache2.4/conf/httpd.conf 搜索LogFormat 就可以查看到,系统给了我们两种格式,combined 和common 我们选择使用了combined ,它记录的信息更全面.接下来我们在虚拟主机配置文件中定义了日志所在路径及类型./usr/local/apache2.4/conf/extra/httpd-vhosts.conf 1访问日志 在ng

Linux学习总结(十五)文件查找 which whereis locate find

which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令.格式 which + 命令 例如 which ls whereis命令 用来定位指令的二进制程序.源代码文件和man手册页等相关文件的路径.whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-

JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据

一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据 量非常大的业务领域(如图象.档案等). LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序.图象.影音等).而CLOB,即字符型大型对象(Character Large Obj

【Unity 3D】学习笔记三十五:游戏实例——摄像机切换镜头

摄像机切换镜头 在游戏中常常会切换摄像机来观察某一个游戏对象,能够说.在3D游戏开发中,摄像头的切换是不可或缺的. 这次我们学习总结下摄像机怎么切换镜头. 代码: private var Camera0: GameObject; private var Camera1: GameObject; private var Camera2: GameObject; private var Camera: GameObject; function Start() { //获取摄像机对象 Camera =

Linux学习笔记&lt;二十五&gt;——openssh服务

ssh:Secure SHell ssh特点: 基于TCP22号端口: 密文认证: 密文传输数据 openssh是ssh的开源实现,支持ssh v1和ssh v2 但ssh v1无法解决中间层攻击,建议不要使用 客户端: Linux:ssh Windows:putty,SecureCRT,SSHSecureShellClient,Xmanager 服务器端: Linux:sshd openssh相关命令 1.ssh -X:enable X11 forwarding -Y:enable trust

JAVA学习笔记(三十五)- 随机读写文件 RandomAccessFile

RandomAccessFile类 /* * RandomAccessFile类,随机读写文件 * * 数据分段要有规律,每段大小相等,可以将每段数据设置为较大的值,足以存在每一个段的数据 * */ public class Test04 { public static void main(String[] args) throws IOException { //writeFile(); readFile(); } // 写入数据 public static void writeFile()

JAVA学习第三十五课(常用对象API)- 集合框架(三)—Vector、LinkedList、ArrayList集合演示

集合框架构成图 摘自百度图片 一.Vector集合 演示 虽然Vector已经不常用了,但是还是要了解一下其中的方法 import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Vector

【转】JMeter学习(三十五)使用jmeter来发送json/gzip格式数据

一.使用jmeter来发送gzip数据 有时候我们需要模拟在客户端将数据压缩后, 发送(post)到服务器端. 通常这种情况,会发生在移动终端上. 这样做的好处, 是可以节省流量.  当然, 服务器返回的数据也可以是gzip格式, 终端在数据展现时,需要先解压缩. 同样也是为了节省网络流量. 1. 首先我们把要post的数据, 保存在文本文件里,然后gzip压缩. (可以使用linux中的gzip命令) 2. 在jmeter的http sample里, 使用"同时发送文件数据"的方式,

linux学习笔记-第十五课-日常管理(二)

一.抓包工具,分析工具 抓包工具 : tcpdump 格式 : tcpdump [-AennqX] [-i 接口] [-w 储存档名] [-c 次数] [-r 档案] [所欲撷取的封包数据格式] 常用选项 : -A :封包的内容以 ASCII 显示,通常用来捉取 WWW 的网页封包资料.    -e :使用资料连接层 (OSI 第二层) 的 MAC 封包数据来显示:    -nn:直接以 IP 及 port number 显示,而非主机名与服务名称    -q :仅列出较为简短的封包信息,每一行