一、网页压缩功能
1.网页压缩功能概述
配置 Apache 的网页压缩功能,是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。
网页压缩的优势:
- 降低了网络传输的字节数,加快网页加载的速度
- 节省流量,改善用户的浏览体验
- gzip 与搜索引擎的抓取工具有着更好的关系
能实现网页压缩功能的模块有 mod_gzip 模块和 mod_deflate 模块。Apache 1.x 系列没有内建的网页压缩技术,但可以使用额外的第三方mod_gzip模块来执行压缩。Apache 2.x系 列官方在发布的时候,就把网页压缩功能考虑进去,内建了mod_deflate 这个模块,用于取 代 mod_gzip 模块。
mod_gzip与mod_deflate对比
mod_gzip | mod_deflate |
---|---|
Gzip 算法,运作原理类似 | Gzip 算法,运作原理类似 |
压缩速度略慢 | 压缩速度略快 |
压缩比略高 | 压缩比略低 |
CPU 占用率略高 | CPU 占用率略低 |
低流量服务器 | 高浏览量服务器 |
2.启用网页压缩功能步骤
(1)查看是否安装了 mod_deflate 模块
首先检查是否安装了 mod_deflate 模块,命令:
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl -t -D DUMP_MODULES |grep "deflate"
#发现未安装 deflate_module (static),重新编译安装
[root@huyouba1 ~]# cd httpd-2.2.24/
[root@huyouba1 httpd-2.2.24]# yum -y install zlib-devel
[root@huyouba1 httpd-2.2.24]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-deflate &&make &&make install
[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl -t -D DUMP_MODULES |grep "deflate"
Syntax OK
deflate_module (static)
[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl restart
(2)为了方便对比,在启用模块前,先使用工具抓包
(3)修改配置文件启用压缩功能 在 httpd.conf 主配置文件最后加上如下三行内容:
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
第一行代表对什么样的内容启用 gzip 压缩
第二行代表压缩级别
第三行代表启用 deflate 模块对本站点的输出进行 gzip 压缩
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
418 AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
420 DeflateCompressionLevel 9
422 SetOutputFilter DEFLATE
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart
(4)抓包测试:
二、配置网页的缓存时间
1.配置网页缓存时间概述
通过 mod_expires 模块配置 Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求。
启用 mod_expires 模块后,会自动生成页面头部信息中的 Expires 标签和 Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。
2.启用网页缓存功能步骤
(1)查看是否安装了 mod_expires 模块
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl -D DUMP_MODULES |grep "expires"
#发现未安装 expires_module (static),重新编译安装
[root@huyouba1 ~]# cd httpd-2.2.24/
[root@huyouba1 httpd-2.2.24]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-deflate --enable-expires &&make &&make install
[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl -D DUMP_MODULES |grep "expires"
Syntax OK
expires_module (static)
[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl restart
(2)为了方便对比,在启用模块前,先使用工具抓包
(3)修改配置文件启用缓存功能 在 httpd.conf 主配置文件最后加上如下内容:
<IfModule mod_expires.c>
ExpiresActive On //开启网页缓存功能
ExpiresDefault “access plus 60 seconds” //http 协议下任的文档都是 60 秒之后过期
</IfModule>
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
425 <IfModule mod_expires.c>
426 ExpiresActive On
427 ExpiresDefault "access plus 60 seconds"
428 </IfModule>
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl stop
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl start
三、Apache 防盗链
1.Apache 防盗链概述
防盗链就是防止别人的网站代码里盗用服务器的图片、文件、视频等相关资源。如果别人盗用网站的这些资源,明显的是会增大服务器的带宽压力。所以,作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
2.配置 Apache 实现防盗链 使用两台主机模拟防盗链:
- 源主机:www.huyouba11.xyz IP 地址 192.168.100.100
- 盗链网站:www.zhen.com IP地址192.168.100.101
源主机操作
[root@huyouba1 ~]# cd /usr/local/apache/htdocs/huyouba11/
[root@huyouba1 huyouba11]# ls
index.html timg.jpg
[root@huyouba1 huyouba11]# vim index.html
<h1>www.huyouba11.xyz Pages</h1>
<img src="timg.jpg">
浏览器测试:
盗链主机操作:
[root@zhen ~]# yum -y install httpd
[root@zhen ~]# vim /var/www/html/index.html
<h1>www.zhen.com</h1>
<img src="http://192.168.100.100/timg.jpg">
[root@zhen ~]# systemctl restart httpd
浏览器测试:
源主机防盗链设置: 检查 Apache 是否安装了 mod_rewrite 模块
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl -D DUMP_MODULES |grep "rewrite"
Syntax OK
rewrite_module (static)
如未安装,参考之前的重新编译安装
配置规则变量说明:
- %{HTTP_REFERER} 浏览 header 中的链接字段,存放一个连接的 URL,代表是从哪个链接访问所需的网页。
- !^ 不以…开头
- .*$ 以任意字符结尾
- NC 不区分大小写
- R 强制跳转
规则匹配说明:
- RewriteEngine ON 打开网页重写功能
- RewriteCond 设置匹配规则
- RewriteRule 设置跳转动作
规则匹配:如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的 规则不再匹配。
修改 httpd.conf 主配置文件
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
#在<Directory “/usr/local/httpd/htdocs”></Directoy>容器中,添加:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://huyouba11.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://huyouba11.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.huyouba11.xyz/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.huyouba11.xyz$ [NC]
RewriteRule .*\.(gif|jpg|swf|jpeg)$ http://www.huyouba11.xyz/error.html [R,NC]
最终匹配结果为:第二、三、四、五行的信任站点,能够使用网站上的图片;处理信任 站点以外的站点,如果访问或使用 http://www.huyouba11.com 域名以外的 gif、jpg、swf 结尾的 文件将跳转到重定向页面。
[root@huyouba1 ~]# echo "error" >/usr/local/apache/htdocs/huyouba11/error.html
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart
浏览器测试,分别刷新两个网页:
四、配置 Apache 隐藏版本号
1.Apache 隐藏版本号的意义
Apache 版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患。生成环境中要 配置 Apache 隐藏版本信息。
2.配置 Apache 隐藏版本信息
修改 httpd.conf 主配置文件
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
408 # Various default settings
409 Include conf/extra/httpd-default.conf //去掉注释
修改 httpd-default.conf 文件
[root@huyouba1 ~]# vim /usr/local/apache/conf/extra/httpd-default.conf
55 ServerTokens Prod
65 ServerSignature Off
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart
抓包测试