设为首页 收藏本站
查看: 1505|回复: 0

[经验分享] apache的优化-日志轮询、错误页面重定向、压缩功能deflate、客户端缓存expire

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-4 09:03:16 | 显示全部楼层 |阅读模式
1.apache日志轮询1.1)什么是日志轮询
默认情况下apache的日志是写入到一个文件中的,这对日志的备份和分析造成不便。日志轮询就是可以把apache的日志根据时间进行分开,例如按天轮询:即apache会把当天的日志写入到一个独立的文件中。
1.2)下载并安装日志轮询工具
1
2
3
4
5
6
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tarzxf cronolog-1.6.2.tar.gz
cdcronolog-1.6.2
./configure
make
make install





1.3)配置轮询
<VirtualHost *:80>
DocumentRoot"/usr/local/httpd-2.2.9/htdocs/sr1/"
ServerName www.sr1.com
ServerAlias www.sr1.com
ErrorLog "logs/www.sr1.com_error_log"
# CustomLog "logs/www.sr1.com_access_log" jie
CustomLog"|/usr/local/sbin/cronolog /usr/local/httpd/logs/sr1_%Y%m%d_access_log"jie
</VirtualHost>
注意日志的文件要写绝对路径
%Y%m%d是按天轮询
%Y%m%d%H是按小时轮询
查看结果:可以发现在logs下sr1的日志会按天来创建
QQ截图20150504090313.png

2.错误页面显示
当服务器出现问题后,会返回给用户客户端错误代码,现在可以设置,根据错误代码把用户的请求重定向到另一个页面,达到友好显示的效果
步骤:查看配置项
1
2
3
4
5
[iyunv@Apache_Server conf]# egrep "ErrorDocument"httpd.conf
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html




现在设置当出现404错误之后,把用户请求重定向到sorry.html页面
创建sorry.html
echo "<h1>I am sorry</h1>" >../htdocs/www/sorry.html

重新加载apache
service httpd reload
现在访问一个不存在的页面,看是否能自动跳转
[iyunv@Client ~]# elinks -dumpwww.beyondjie.com/mmm
                                   I am sorry

提示:刚开始的时候,我参照配置文件默认的方法进行修改,即
ErrorDocument 404 /sorry.html
但是无论如何都跳转不过来。经过查官方文档才知道sorry.html文件太小了,IE认为找不到,又是404错误。如果sorry.html的小于512字节的话,那么IE会认为这个错误页面不够“友好”,会忽视掉的。

3.文件压缩功能mod_deflate文件压缩就是服务器收到请求之后,先把返回给客户端的内容进行压缩,然后再传输,这样可以显著减少文件传输的大小,传输到客户端之后浏览器会重新对压缩过的内容进行解压缩。所以文件压缩可以减少带宽。但是由于在传输前需要服务压缩,从而消耗服务器资源。
3.1)查看mod_deflate模块是否存在
  • 3.1.1查看是否存在静态编译的mod_deflate

[iyunv@Apache_Server ~]#/usr/local/httpd/bin/apachectl -l | grep mod_deflate

  • 3.1.2查看动态编译的mod_deflate是否存在

[iyunv@Apache_Server ~]# ll /usr/local/httpd/modules/| grep mod_deflate
-rwxr-xr-x 1 root root  76103 12月 16 12:19 mod_deflate.so
注意:两者不可以同时存在

3.2)deflate压缩模块的配置
  • 3.2.1实验之前,先取没有压缩时服务器返回的数据

1
2
3
4
5
6
7
8
9
[iyunv@Apache_Server httpd]# curl -Iwww.beyondjie.com/index.htm
HTTP/1.1 200 OK
Date: Tue, 30 Dec 2014 12:12:04 GMT
Server: Apache/2.4.4 (Unix)
Last-Modified: Tue, 30 Dec 2014 12:10:08GMT
ETag: "25963-50b6ddf39c800"
Accept-Ranges: bytes
Content-Length: 153955
Content-Type: text/html




  • 3.2.2修改httpd.conf,添加下面语句

1
2
3
4
5
6
7
<ifmodule mod_deflate.c>
       DeflateCompressionLevel 9                  --->压缩等级,数越大压缩率越高,越消耗cpu
       SetOutputFilter DEFLATE                   --->启用压缩功能
       AddOutputFilterByType DEFLATE www/html www/plain www/xml    --->压缩常规项
       AddOutputFilterByType DEFLATE www/javascript
        AddOutputFilterByType DEFLATE www/css
</ifmodule>





  • 3.2.3重新加载apache配置文件

1
2
[iyunv@Apache_Server www]# service httpdreload
Reloading httpd:                                          [  OK  ]



  • 3.2.4继续curl一下网站,查看结果

1
2
3
4
5
6
7
8
9
10
[iyunv@Apache_Server www]# curl -I www.beyondjie.com/index.htm
HTTP/1.1 200 OK
Date: Tue, 30 Dec 2014 12:59:40 GMT
Server: Apache/2.4.4 (Unix)
Last-Modified: Tue, 30 Dec 2014 12:10:08GMT
ETag: "25963-50b6ddf39c800"
Accept-Ranges: bytes
Content-Length: 153955
Vary:Accept-Encoding         ----->表示已经进行了压缩
Content-Type: text/html




4. expires前端缓冲优化现在越来越多的图片、脚本、CSS、flash被嵌入到页面中,当我们访问他们的时候势必会做许多次的http请求。其实我们可以通过expires header来缓存这些文件。Expire其实就是通过header报文来指定特定的类型文件在浏览器中的缓存时间。大多数的图片、flash发布后是不需要经常修改的,做了缓存以后这样浏览器以后就需再从服务器下载这些文件而是直接从缓存中读取,这样再次访问页面的速度就会大大加快

4.1配置方法4.1.1检查模块是否安装
     先查看编译的时候是否加入了该模块:
1
2
                  
[iyunv@Server ~]# /usr/local/httpd/bin/apachectl -l | grepmod_expire



         没返回结果表示没有该模块,所以需要动态重新添加该模块(编译的时候加入—enable-expires表示启用该模块)
         查看动态是否安装该模块

1
2
[iyunv@Server ~]# ls /usr/local/httpd/modules/ |  grep mod_expire   
mod_expires.so



有返回结果表示存在mod_expires模块,直接在配置文件中使用LoadModule调用即可
动态编译方法
cd /usr/src/httpd-2.4.4/modules/metadata/    #进入apache软件包的目录的expire程序下
/usr/local/httpd/bin/apxs -c -i -amod_expires.c #以DSO形式编译到apache中
apxs的参数说明
-c:表示需要执行编译操作,它首先会编译c源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中国其余的目标代码文件(.o和.a),以生成动态共享对象dsofile,如果没有地址那个-o选项则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so。
-i:表示需要执行安装操作,以安装一个活多个动态共享对象到服务器的modules目录中。
-a:表示自动增加一个loadmodule行到httpd.conf中,以激活此模块或者如果此行已经存在,则启动该模块

4.1.2针对虚拟主机或者主配置文件的配置项
ExpiresActive on
       ExpiresDefault "access plus 12 month"      
       ExpiresByType text/html "access plus 12 months"
       ExpiresByType text/css "access plus 12 months"
       ExpiresByType image/gif "access plus 12 months"
       ExpiresByType image/jpeg "access plus 12 months"
       ExpiresByType image/jpg "access plus 12 months"
       ExpiresByType image/png "access plus 12 months"
       EXpiresByType application/x-shockwave-flash "access plus 12months"
       EXpiresByType application/x-javascript "access plus 12 months"
       ExpiresByType video/x-flv "access plus 12 months"

上面该项可以正对整个web、虚拟目录、虚拟目录中的特定目录进行配置,只需要把语句添加到要缓存的对象之下
4.1.3 配置案例—将网站根目录下的jpg文件缓存一年
1)先记录没有配置expire之前的curl状态
1
2
3
4
5
6
7
8
9
[iyunv@client ~]# curl -I192.168.254.10/test.jpg
HTTP/1.1 200 OK
Date: Sat, 02 May 2015 20:44:38 GMT
Server: Apache/2.4.4 (Unix)
Last-Modified: Sat, 05 Jul 2014 13:16:57GMT
ETag: "37df92-4fd720e6d8440"
Accept-Ranges: bytes
Content-Length: 3661714
Content-Type: image/jpeg



2)配置expire
ExpiresActive on
       ExpiresDefault "access plus 12 month"
        ExpiresByType /jpg"access plus 12 months"
       ExpiresByType text/html "access plus 12 months"
       ExpiresByType text/css "access plus 12 months"
       ExpiresByType image/gif "access plus 12 months"
       ExpiresByType image/jpeg "access plus 12 months"
       ExpiresByType image/jpg "access plus 12 months"
       ExpiresByType image/png "access plus 12 months"
       EXpiresByType application/x-shockwave-flash "access plus 12months"
       EXpiresByType application/x-javascript "access plus 12 months"
       ExpiresByType video/x-flv "access plus 12 months"
配置完之后重启httpd进行测试
1
2
3
4
5
6
7
8
9
10
11
[iyunv@client ~]# curl -I192.168.254.10/test.jpg
HTTP/1.1 200 OK
Date: Sat, 02 May 2015 21:20:06 GMT
Server: Apache/2.4.4 (Unix)
Last-Modified: Sat, 05 Jul 2014 13:16:57GMT
ETag: "37df92-4fd720e6d8440"
Accept-Ranges: bytes
Content-Length: 3661714
Cache-Control: max-age=31104000
Expires: Tue, 26 Apr 201621:20:06 GMT
Content-Type: image/jpeg



通过curl的结果可知,在expire选项中会缓存到2016年。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-63383-1-1.html 上篇帖子: http服务器在apache上的配置--我的学习记录 下篇帖子: HTTP协议和APACHE服务器 客户端 定向
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表