学会Apache网页与安全的优化,让你的技术更加胜人一筹!(网页压缩与缓存、隐藏版本信息与配置防盗链)

前言:

我们在使用Apache 作为Web服务器的过程中,只有对 APache 服务器进行适当的优化配置,才能让 Apache 发挥出更好的性能;反过来说,如果 Apache 的配置非常糟糕,则可能无法正常为我们提供服务。 因此,针对我们的应用需求对 APache 服务器的配置进行一定的优化是必不可少的。

一、Apache的压缩模块

(一)、网页压缩

1、网页优化概述
在企业中,部署Apache后会有默认的配置参数,如果不及时进行优化配置,在当今互联网时代,会引发网站很多问题。
为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache的优化内容

2、优化内容

  • 配置网页压缩功能
  • 工作模式的选择与参数优化
  • 配置防盗链
  • 配置隐藏版本号

(二)、网页gzip概述

配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后在传输到客户端浏览器

1、作用

  • 降低了网络传输的字节数,加快网页加载的速度
  • 节省流量,改善用户的浏览体验
  • gzip与搜索引擎的抓取工作有着更好的关系

(三)、Apache的压缩模块

1、Apache实现网页压缩的功能模块包括

  • mod_gzip模块
  • mod_deflate模块

2、Apache 1.x

  • 没有内建网页压缩技术,但是可以使用第三方mod_gzip模块执行压缩

3、Apache 2.x

  • 在开发的时候,内建了mod_deflate这个模块,取代mod_gzip

4、mod_gzip模块与mod_deflate模块

  • 两者均使用gzip压缩算法,运作原理类似
  • mod_deflate压缩速度略快,而mod_gzip的压缩比略高
  • mod_gzip对服务器CPU占用要高一些
  • 高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快

(四)、启用网页压缩功能步骤

1、查看是否安装mod_deflate模块
2、修改配置文件,启用压缩功能
3、访问测试

(五)、Apache的压缩模块配置命令

1、将之前Apache的旧的配置文件进行移除或者改名

cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak1

2、检查是否安装 mod_deflate 模块

apachectl -t -D DUMP_MODULES | grep "deflate"

3、如果没有安装mod_deflate模块,重新编译安装 Apache 添加mod_deflate 模块

#需要先将服务关闭
systemctl stop httpd.service
#使用该命令查看是否关闭成功
systemctl status httpd.service

yum -y install gcc gcc-c++ make pcre pcre-devel zlib-devel

cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \       #加入mod_deflate 模块
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
  
make -j 2 && make install     #编译安装

4、配置 mod_deflate 模块 启用

vim /usr/local/httpd/conf/httpd.conf
-----52行修改------
Listen 192.168.200.50:80
----105行取消注释----
LoadModule deflate_module modules/mod_deflate.so
----197行取消注释,修改------
ServerName www.gcc.com:80
-----末行添加-------
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png       #代表什么类型的内容启用gzip压缩
  DeflateCompressionLevel 9      #代表压缩级别,范围为1-9
  SetOutputFilter DEFLATE        #代表启用 deflate 模块对本站点的输出进行gzip压缩
</IfModule>

5、检查安装情况,启动服务

apachectl -t      #验证配置文件的配置是否正确

apachectl -t -D DUMP_MODULES | grep "deflate"   #检查是否安装 mod_deflate 模块
 deflate_module (shared)     #出现该段,说明安装模块成功

6、添加网页内容,进行后续的测试

cd /usr/local/httpd/htdocs/
#将自己想要测试的图片上传到该/htdocs目录下
ls
bbs  index.html  index.html.bak  index.php  photo.jpg  #photo.jpg是我上传的图片


vim /usr/local/httpd/htdocs/index.html
<html><body><h1>
What Does The Bee Do?What does the bee do?Bring home honey.And what does Father do?Bring home money.And what does Mother do?Lay out the money.And what does baby do?Eat up the honey.by C. G. Rossetti, 1830-1894
<img src="photo.jpg"/>
</body></html>

systemctl restart httpd.service

方法一:
在LInux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ----> 选择 HTML、WS、其他
访问 http://192.168.200.50,多次刷新后查看响应头中包含 Content-Encoding; gzip

方法二:
在windows10 系统中依次安装 fiddler 软件,打开 fiddler软件
选择 inspectors -----> 选择 Headers
浏览器访问 http://192.168.200.50 ,多次刷新后查看 Content-Encoding; gzip
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、网页缓存

(一)、配置网页的缓存时间概述

  • 通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求
  • 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降 低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

(二)、启用网页的缓存功能步骤

1、查看是否安装mod_expire模块
2、修改配置文件启用缓存功能
3、访问测试

(三)、网页缓存优化配置命令

1、检查是否安装 mod_ expires 模块

apachectl -t -D DUMP_MODULES | grep "expires"

2、如果没有安装mod_ expires 模块,重新编译安装Apache 添加mod_ expires 模块

systemctl stop httpd.service    #先将httpd服务关闭

cd /usr/local/httpd/conf       #将旧的配置文件移除或者改名
mv httpd.conf httpd.conf.bak2

yum -y install gcc gcc-c++ make pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-expires \      #加入mod_ expires 模块
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
  
make -j 2 && make install     #编译安装

3、配置 mod_expires 模块启用

vim /usr/local/httpd/conf/httpd.conf
----52行修改------
Listen 192.168.200.50:80
----111行取消注释-----
LoadModule expires_module modules/mod_expires.so     #开启mod_expires模块
----199行取消注释,修改------
ServerName www.gcc.com:80
-----末行添加---------
<IfModule mod_expires.c>
  ExpiresActive On                 #打开网页缓存功能
  ExpiresDefault "access plus 60 seconds"    #设置缓存60
</IfModule>

4、检查安装情况,启动服务

apachectl -t      #验证配置文件的配置是否正确
Syntax OK         #出现该字段说明配置正确
 
apachectl -t -D DUMP_MODULES | grep "expires"  #检查mod_expires 模块是否已安装 
 expires_module (shared)     #出现该行说明安装成功

systemctl restart httpd.service

5、检测缓存是否生效
方法一:
在LInux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ----> 选择 HTML、WS、其他
访问 http://192.168.200.50,多次刷新后查看响应头中包含 Expires 项

方法二:
在windows10 系统中依次安装 fiddler 软件,打开 fiddler软件
选择 inspectors -----> 选择 Headers
浏览器访问 http://192.168.200.50 ,多次刷新后查看 Expires 项

在这里插入图片描述

在这里插入图片描述

三、安全优化(防盗链)

(一)、防盗链概述

  • 防盗链就是防止别人的网站代码里面盗用服务器的图片,文件,视频等相关资源
  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
  • 作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用

(二)、防盗链步骤与命令

为了测试防盗链是否设置成功,我们这里将使用两台虚拟机,一台作为盗链主机7-1,一台作为设置防盗链的主机7-5。

设置盗链主机7-1

yum install -y httpd

vim /var/www/html/index.html
<html><body><h1>IT WORKS!</h1>
<img src="http://192.168.200.50/photo.jpg"/>
</body></html>

echo "192.168.200.10 www.accp.com" >> /etc/hosts
echo "192.168.200.50 www.gcc.com" >> /etc/hosts

systemctl restart httpd

设置完成后就可以通过访问 http://www.accp.com 获取到盗链的www.gcc.com 的图片了。
在这里插入图片描述

那么为了防止被盗取链接,此时我们就可以在服务器7-5上设置防盗链配置了。

1、检查是否安装 mod_ rewrite 模块

apachectl -t -D DUMP_MODULES | grep "rewrite"

2、如果没有安装mod_ rewrite 模块,重新编译安装Apache 添加mod_ rewrite 模块

systemctl stop httpd.service    #先将httpd服务关闭

cd /usr/local/httpd/conf       #将旧的配置文件移除或者改名
mv httpd.conf httpd.conf.bak2

yum -y install gcc gcc-c++ make pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-expires \     
--enable-so \
--enable-rewrite \        #加入mod_ rewrite 模块
--enable-charset-lite \
--enable-cgi
  
make -j 2 && make install     #编译安装

3、配置 mod_ rewrite 模块启用
需提前在/usr/local/httpd/htdocs 中上传盗链警告的图片
在这里插入图片描述

vim /usr/local/httpd/conf/httpd.conf
----157行取消注释------
LoadModule rewrite_module modules/mod_rewrite.so
----249行下面添加-----
    RewriteEngine On             #打开 rewrite 功能,加入 mod_ rewrite 模块内容
    RewriteCond %{HTTP_REFERER} !^http://gcc.com/.*$ [NC]  #设置匹配规则
    RewriteCond %{HTTP_REFERER} !^http://gcc.com$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.gcc.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.gcc.com/$ [NC]
    RewriteRule .*\.(gif|jpg|swf)$ http://www.gcc.com/error.png  #设置跳转动作

RewriteCond %{HTTP_REFERER} !^http://www.gcc.com/.*$ [NC]的字段含义:
%{HTTP_REFERER}":存放一个链接的URL,表示从哪个链接访问所需的网页。
!^”:表示不以后面的字符串开头。
"http://www.gcc.com”:是本网站的路径,按整个字符串匹配。
".*$":表示以任意字符结尾。
[NC]”:表示不区分大小写字母。
 
RewriteRule .*\.(gif | jpg | swf)$ http://www.gcc.com/error.png的字段含义:
"."表示匹配一个字符。
"*"表示匹配0到多个字符,与“. 合起来的意思是匹配0到多次前面的任意字符,如果是1到多次匹配可以用“+”表示。
"\.":在这里的“\”是转义符,“\.”就代表符号“.”的意思。因为“."在指令中是属于规则字符,有相应的含义,
如果需要匹配,需要在前面加个转义符“\”,其它规则字符如果需要匹配,也做同样处理。
(gif | jpg | swf)" :表示匹配"gif”、“jpg”、“swf"任意 一个,“$”表示结束。最后的规则是以“.gif" .jpg”、“.swf"结尾,前而是1到多个字符的字符串,也就是匹配图片类型的文件。
"http://www.gcc.com/error.png”:表示转发到这个路径。
整个配置的含义是使用本网站以外的网站域名访问本站的图片文件时,显示error.png 这个图片。

在这里插入图片描述

systemctl restart httpd.service    #重启服务

此时如果再次使用盗链域名进行访问的话,就会出现预先设置的警告的图片。
在这里插入图片描述

四、隐藏版本信息

(一)、配置Apache隐藏版本信息的必要性

  • Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
  • 生产环境中要配置Apache隐藏版本信息
  • 可使用Fiddler抓包工具分析

(二)、隐藏版本信息步骤与命令

vim /usr/local/httpd/conf/httpd.conf
----491行取消注释-------
Include conf/extra/httpd-default.conf

vim /usr/local/httpd/conf/extra/httpd-default.conf
-----55行,将原本的 Full 改为 Prod,只显示名称,没有版本-------
ServerTokens Prod
#ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息。


systemctl restart httpd.service

此时就不会出现Apache的版本信息了
在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值