1:网页压缩
网站访问速度影响因素:应用程序响应速度、网络带宽、服务器性能、与客户端之间网络传输速度等。其中最重要的是=一个因素是Apache本身,因此提升Apache执行速度(使用网页压缩)是性价比最高的选择。
(1)gzip介绍
一种流行的文件压缩算法,大约可以减少70%以上的文件大小。利用Apache的gzip模块可使用该算法对网页内容进行压缩后再传输给客户端浏览器,从而加快网页加载速度
(2)HTTP压缩过程
1.服务器接收到HTTP请求后,先检查浏览器是否支持压缩(Accept-Encoding信息)
2.如果支持,服务器将检查请求文件的后缀,如HTML,CSS等静态文件,服务器会在压缩缓存目录中查找是否存在最新的压缩文件
3.如果不存在最新压缩文件,服务器会返回未压缩的请求文件,并在缓存目录中存放该请求的压缩文件
4.如果存在新压缩文件,则直接返回请求的压缩文件
5.如果请求是动态文件,则服务器会动态压缩内容并返回浏览器,但内容不会存放到缓存目录中
(3)Apache的压缩模块
1.Apache 1.x系列没有内江网页压缩技术,使用的是第三方mod_gzip模块进行压缩
2.x系列内建了mod_deflate模块来取代mod_gzip
3.mod_gzip对服务器cpu占用更高,但压缩效率更高
2.查看浏览器支持哪些压缩
mod_deflate 模块
检查是否安装有 mod_deflate 模块
[root@www ~]# apachectl -t -D DUMP_MODULES | grep deflate
(1)安装时启用此功能
安装时编译 Apache 添加 mod_deflate 模块
[root@apache ~]# tar zxf httpd-2.4.25.tar.gz
[root@apache ~]# cd httpd-2.4.25/
[root@apache ttpd-2.4.25]#./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
[root@apache httpd-2.4.25]#make && make install
[root@apache httpd-2.4.25]#ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
(2)利用apxs为http扩展此功能
如果有apache的源码,可以重新编译并安装一次,新的模块就会添加进去,如果没有源码,或不想重新编译,可以使用apxs扩展此模块,方法如下
[root@www ~]# yum -y install zlib-devel
[root@www ~]# cd httpd-2.4.25/modules/filters/
[root@www filters]# /usr/local/httpd/bin/apxs -i -c -a mod_deflate.c
备注:
-i 安装
-c 编译指定模块
-a激活模块
(2)配置 mod_deflate 模块启用
[root@apache~]# vim /usr/local/httpd/conf/httpd.conf
添加以下内容:
LoadFile /usr/lib64/libz.so
LoadModule deflate_module modules/mod_deflate.so
LoadFile /usr/lib64/libz.so
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
[root@www httpd-2.4.25]# httpd -t
[root@www httpd-2.4.25]# apachectl restart
[root@localhost httpd-2.4.25]# apachectl -t -D DUMP_MODULES | grep deflate
deflate_module (shared)
(3)测试 mod_deflate 压缩模块是否生效
访问网站:
http://192.168.10.101/test1.php
网页缓存
1:配置 mod_expires 模块启用
[root@apache~]# vim /usr/local/httpd/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so ##去掉前面的注释
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>
备注:
ExpiresActive On:打开网页缓存功能
ExpiresDefault "access plus 60 seconds" :设置缓存60秒
2:检测 httpd.conf 语法
[root@www ~]# apachectl -t
3:重启 Apache 服务
[root@www ~]# apachectl restart
4:测试mod_expires 模块
访问网站:
http://192.168.10.101/test1.php
隐藏版本信息
1:修改主配置文件
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
去掉前面的注释符
Include conf/extra/httpd-default.conf
2:修改httpd-default.conf文件
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Prod
ServerTokens字段代表显示格式,各种格式如下:
Prod Server:Apache
Major Server:Apache/2
Minor Server:Apache/2.4
OS Server: Apache/2.4.25 (Unix)
Full Server: Apache/2.4.25 (Unix) PHP/4.2.2 MyMod/1.2
重启并测试
[root@www ~]# apachectl restart
查看响应头,Server字段只显示Apache,不再显示版本信息
Apache 防盗链
将第一台服务器直接克隆一个,并修改IP地址为192.168.10.201
3:修改两台服务器的主机名
(1)服务器1
[root@www ~]# hostnamectl set-hostname apache1
[root@www ~]# bash
(2)服务器2
[root@www ~]# hostnamectl set-hostname apache2
[root@www ~]# bash
(3)修改每个主机的hosts文件
192.168.10.101 www.benet.com
192.168.10.102 www.accp.com
4:编写带有图片的网页(原图网站)
将图片文logo.jpg件拷贝到apache的网站根目录下并修改网页文件
[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It work! </h1>
<img src="logo.jpg"/>
</body>
</html>
5:用另一台apache服务器盗链(盗图网站)
在 www.accp.com 服务器,修改 index.html 文件,加入盗取图片链接
[root@apache2 ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>dao lian </h1>
<img src="http://www.benet.com/logo.jpg" />
</body>
</html>