网站大多元素为静态文件,如图片,css,js等,这些元素能够不记录。javascript
1.修改虚拟主机配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.confcss
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> ErrorLog "logs/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 #以上为定义变量:将全部关于图片的请求定义为变量img CustomLog "logs/111.com-access_log" combined env=!img #“env=!img”表示非img变量。本行命令的含义是:不记录关于变量img的请求日志。 </VirtualHost>
将全部访问图片格式的请求定义为变量img,在访问日志中排除img部分。java
2.从新加载配置文件:apache
/usr/local/apache2.4/bin/apachectl -t浏览器
/usr/local/apache2.4/bin/apachectl graceful缓存
3.测试:bash
curl -x127.0.0.1:80 111.com/xxxxx -I app
curl -x127.0.0.1:80 111.com/xxxxx.jpg -Icurl
执行以上两条命令,正常状况下在/usr/local/apache2.4/logs/111.com-access.log日志中只会存在xxxxx的访问记录,xxxxx.jpg的访问不会记录到日志中。工具
日志一直在记录,总会有堵满磁盘的时候,因此须要让日志自动切割,并删除旧的日志文件。
1.编辑虚拟主机配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> ErrorLog "logs/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 "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img #使用rotatelogs工具,以系统时间为基准,天天切割一第二天志,而且日志名字格式为“111.com-access_%Y%m%d.log”。 #每小时切割一第二天志,语法: #CustomLog "|/usr/local/apache2.4/bin/rotatelogs logs/access_%Y%m%d%H.log 3600" combined
2.从新加载配置文件:
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
3.配合cron定时删除久日志
当浏览器访问网站时会把静态文件(如图片文件、css、js文件等)缓存到本地电脑,这样下次访问的时候就不用去远程下载了,能够自定义清除该部分缓存的时间,即设定静态元素过时时间。该设置可用于优化网站,特别是公司内网。
1.编辑虚拟主机配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> <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> ErrorLog "logs/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 "|usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img #使用rotatelogs工具,以系统时间为基准,天天切割一第二天志,而且日志名字格式为“111.com-access_%Y%m%d.log”。
2.检查expires模块是否开启并从新加载配置文件:
/usr/local/apache2.4/bin/apachectl -M |grep expires
若没开启,编辑主配置文件:/usr/local/apache2.4/conf/httpd.conf;搜expires,去掉行前#
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
3.测试:
使用curl -x192.168.8.131:80 111.com/baidu.png -I