Apache网页优化与防盗链

一.Apache网页优化的概述

1、Apache网页优化的概念

• 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代

• 为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容

2、Apache网页优化的内容

配置网页压缩功能

配置网页缓存

工作模式的选择与参数优化

配置隐藏版本号

配置防盗链

……

3、gzip介绍

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

3.2 作用

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

4、 Apache的压缩模块

4.1 .Apache实现网页压缩的功能模块包括

• mod_ gzip 模块
• mod_ deflate 模块

4.2 .Apache 1.x

没有内建网页压缩技术,但可使用第三方mod_ gzip 模块执行压缩

4.3 .Apache 2.x

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

4.4 .mod_ gzip 模块与mod_ deflate 模块

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

5、 配置网页的缓存时间

通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求

启用mod_expire模块后, 会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

6、配置Apache实现防盗链

防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源

如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力

作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用

二、网页压缩的操作步骤

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

apachectl -t -D DUMP_MODULES | grep "deflate"

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

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak

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

cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate
#加入mod deflate 模块
make && make install

3、配置 mod deflate 模块启用

vim /usr/local/httpd/conf/httpd.conf
--51行--修改 注释52行
Listen 192.198.80.10:80
# Listen 80
--105行--取消注释
LoadModule deflate module modules/mod deflate.so				#开启mod deflate 模块

--197行--取消注释,修改 
ServerName www . clj. 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>

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

apachect1 -t											#验证配置文件的配置是否正确
apachectl_-t -D DUMP_ MODULES l grep "deflate"			#检查 mod deflate 模块是否已安装
deflate module (shared)									#已安装的正确结果
systemctl start httpd.service

5、测试 mod_deflate 压缩是否生效  

cd /usr/local/httpd/htdocs
先将game.jpg文件传到/usr/local/httpd/htdocs目录下 
vim index.html
<html><body>
<hl>It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works !</h1>
<img src="game. jpg"/></body></html>

三、实例操作:网页压缩

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

[root@cm ~]# apachectl -t -D DUMP_MODULES |grep "deflate"

  

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

2.1 关闭服务,然后对httpd文件进行备份后,安装相关程序

[root@cm ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@cm ~]# cd /usr/local/httpd/conf/
[root@cm conf]# ls
extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
[root@cm conf]# mv httpd.conf httpd.conf.bak1
[root@cm conf]# ls
extra  httpd.conf.bak  httpd.conf.bak1  magic  mime.types  original
[root@cm conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本
软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本

  

2.2  配置软件模块中添加 mod_deflate 模块

[root@cm conf]# cd /opt/httpd-2.4.29/
[root@cm httpd-2.4.29]# ls
ABOUT_APACHE     build         CMakeLists.txt  configure.in  httpd.mak       libhttpd.dep  Makefile.win  NWGNUmakefile     server
acinclude.m4     BuildAll.dsp  config.layout   docs          httpd.spec      libhttpd.dsp  modules       os                srclib
Apache-apr2.dsw  BuildBin.dsp  config.log      emacs-style   include         libhttpd.mak  modules.c     README            support
Apache.dsw       buildconf     config.nice     httpd         INSTALL         LICENSE       modules.lo    README.cmake      test
apache_probes.d  buildmark.o   config.status   httpd.dep     InstallBin.dsp  Makefile      modules.o     README.platforms  VERSIONING
ap.d             CHANGES       configure       httpd.dsp     LAYOUT          Makefile.in   NOTICE        ROADMAP
[root@cm httpd-2.4.29]# 
[root@cm httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-deflate

  

2.3重新编译安装

[root@cm httpd-2.4.29]# make -j2 && make install

  

3、配置mod_deflate 模块启用

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

[root@cm ~]# apachectl -t
Syntax OK
[root@cm ~]# apachectl -t -D DUMP_MODULES |grep "deflate"
 deflate_module (shared)
[root@cm ~]# systemctl restart httpd.service 

  

5、测试mod deflate 压缩是否生效

[root@cm ~]# cd /usr/local/httpd/htdocs/
[root@cm htdocs]# ls
index.html  meme.jpg
[root@cm htdocs]# vim index.html 

<html><body><h1>
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
It works!
</h1>
<img src = "meme.jpg"/>
</body></html>

  

6、在/etc/hosts文件中加入映射

[root@cm htdocs]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.229.60 www.ly.com
192.168.229.60 www.weq.com

  

7、测试(在客户机win10以及本机上进行测试)

7.1 在本机上进行测试

  

7.2 在客户机win10上进行测试

7.2.1 因为主机设置/etc/hosts文件并进行了映射,那么客户机也要同样进行设置才能用IP地址和域名同时访问

  

7.2.2 使用域名访问并查看

  

  

 7.2.3 使用IP地址访问并查看

 

 

四、网页缓存

通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求。

启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。

1、.检查是否安装mod_expires 模块

apachectl -t -D DUMP_MODULES | grep "expires"

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

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak1

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

3、.配置mod_expires模块启用

vim /usr/local/httpd/conf/httpd.conf #修改配置文件

----52行修改-----
Listen 192.168.80.77:80

----111行取消注释----
LoadModule expires_module modules/mod_expires.so

----199行取消注释并修改-----
ServerName www.clj.com:80

----末行添加-----
<IfModule mod_expires.c>
ExpiresActive On #打开网页缓存功能
ExpiresDefault "access plus 60 seconds" #设置缓存60秒
</IfModule>

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

apachectl -t
#验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "expires"
#检查mod_ deflate模块是否已安装
deflate_module (shared)
#已安装的正确结果
systemctl start httpd.service

5、测试缓存是否生效

cat /usr/local/httpd/htdocs/index.html
方法一-:
在Linux系统中,打开火狐浏览器,右击点查看元素
选择网络--->选择HTML、WS、其他
访问http://192.168.80.10,双击200消息查看响应头中包含Expires项

方法二:
在Windows系统中依次安装Microsoft. NET4和fiddler 软件,打开fiddler 软件
选择inspectors --->选择Headers
浏览器访问http://192.168.229.60 ,双击200消息查看Expires 项

五、实例操作:网页缓存

1、检查是否安装mod_expires 模块

[root@cm ~]# apachectl -t -D DUMP_MODULES | grep "expires"

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

2.1  安装相关程序

[root@cm ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@cm ~]# cd /usr/local/httpd/conf/
[root@cm conf]# ls
extra  httpd.conf  httpd.conf.bak  httpd.conf.bak1  magic  mime.types  original
[root@cm conf]# mv httpd.conf httpd.conf.bak2
[root@cm conf]# ls
extra  httpd.conf.bak  httpd.conf.bak1  httpd.conf.bak2  magic  mime.types  original
[root@cm conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
已加载插件:fastestmirror, langpacks
base                                                                                                                             | 3.6 kB  00:00:00     
extras                                                                                                                           | 2.9 kB  00:00:00     
updates                                                                                                                          | 2.9 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本
软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本
软件包 zlib-devel-1.2.7-19.el7_9.x86_64 已安装并且是最新版本
无须任何处理

  

2.2 加载模块并添加mod_expires 模块

[root@cm ~]# cd /opt/httpd-2.4.29/
[root@cm httpd-2.4.29]# cd /opt/httpd-2.4.29/
[root@cm httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-deflate \
> --enable-expires

  

2.3  重新编译安装

[root@cm httpd-2.4.29]# make -j2 && make install

  

3、配置mod_expires模块启用

[root@cm ~]# cd /usr/local/httpd/conf/
[root@cm conf]# ls
extra  httpd.conf  httpd.conf.bak  httpd.conf.bak1  httpd.conf.bak2  magic  mime.types  original
[root@cm conf]# vim httpd.conf

  

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

[root@cm conf]# apachectl -t
Syntax OK
[root@cm conf]# apachectl -t -D DUMP_MODULES | grep "deflate"
 deflate_module (shared)
[root@cm conf]# systemctl restart httpd.service

  

5、测试mod deflate 压缩是否生效(因为上个实验网页已经设置好,直接进入浏览器测试即可)

5.1 在本机上进行测试

5.2 在客户机win10 上进行测试  

  

六、Apache安全优化——隐藏版本信息

Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患生产环境中要配置Apache隐藏版本信息

1、隐藏版本信息的操作步骤

vim /usr/local/httpd/conf/httpd.conf 			#修改此文件,修改内容如下
------491行--取消注释------
Include conf/extra/httpd-default.conf

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

systemctl restart httpd.service				#重新启动服务

2、实例操作:隐藏版本信息

2.1 修改配置文件并重启服务

2.2 测试是否隐藏版本信息

2.2.1 本机测试

隐藏前

隐藏后

2.2.2 客户机win10进行测试

隐藏前 

隐藏后

 

七、Apache安全优化——配置防盗链的操作步骤

  • 防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源

  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力

  • 作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用

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

apachectl -t -D DUMP_MODULES | grep "rewrite"

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

systemctl stop httpd.service								#停止服务
cd /usr/local/httpd/conf/									#切换目录
mv httpd.conf httpd.conf.bak3								#文件备份
yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel		#安装相关程序

cd /opt/httpd-2.4.29/										#切换目录
#添加 mod rewrite模块 
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires --enable-rewrite
make -j4 && make install									#重新编译安装

3、配置 mod_rewrite 模块启用

vim /usr/local/httpd/conf/httpd.conf
--157行--取消注释
LoadModule rewrite_module modules/mod_rewrite.so
--224行--
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

Rewri teEngine On
#打开rewrite功能,加入mode_ rewrite模块内容
RewriteCond %{HTTP_REFERER} !^http://ly.com/。*$ [NC]
#设置匹配规则
RewriteCond %{HTTP_REFERER} !^http://ly. com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ly.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} ! ^http://www.ly.com/$ [NC]
RewriteRule .*\.(gif | jpg | swf)$ http://www.ly.com/error.png
#设置跳转动作
</Directory>  

RewriteCond %{HTTP REFERER}!^http;//www.clj.com.s【NC】 的字段含义∶ "%{HTTP
REFERER}"∶ 存放一个链接的 URL,表示从哪个链接访问所需的网页。 "!^∶ 表示不以后面的字符串开头。
"http;//www.clj.com"∶ 是本网站的路径,按整个字符串匹配。 .$"∶ 表示以任意字符结尾。 "【NC】 "∶
表示不区分大小写字母。

RewriteRule ..(gifljpg|swf)$ http;//www.clj.com/error.png的字段含义∶
". "∶表示匹配一个字符。
"“∶ 表示匹配 0 到多个字符,与”.“合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用”+“表示。
“.“∶ 在这里的”“是转义符,”.“就代表符号”.“的意思。因为”.“在指令中是属于规则字符,有相应的含义,如果需要匹配, 需要在前面加个转义符””,其它规则字符如果需要匹配, 也做同样处理。
“(gifljpglswf)“∶ 表示匹配"gif”、“jpg”、“swf"任意一个,”$“表示结束。最后的规则是以”.gif”、”.jpg"、".swf"结尾,前面是1到多个字符的字符串,也就是匹配图片类型的文件。
"http∶/www.clj.com/error,pnq"∶ 表示转发到这个路径 。

 

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://ly.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://ly.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ly.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ly.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.ly.com/error.png  

4、网页准备

4.1 Web源主机配置∶

cd /usr/local/httpd/htdocs
将1.jpg、2.jpg、3.png文件传到/usr/local/httpd/htdocs目录下 

vim index.html
<html><body><h1>this is clj.com!</hl>
<img src="1.jpg"/>
</body></html>

echo "192.168.229.60 www.ly.com">> /etc/hosts 
echo "192.168.229.90 www.weq.com" >>/etc/hosts

4.2 盗链网站主机∶

yum install -y httpd
cd /usr/local/httpd/htdocs 			#yum安装的httpd服务的默认路径为/var/www/html/
vim index.html				
<html><body><h1>this is benet.com!</h1>
<img src="http;//www.clj.com/1.jpg"/>
</body></html>

echo "192.168.229.60 www.ly.com">> /etc/hosts 
echo "192.168.229.90 www.weq.com" >>/etc/hosts

在盗图网站主机上进行浏览器验证 http:www.weq.com 或者192.168.229.90  

八、实例操作:Apache安全优化——配置防盗链  

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

[root@cm conf]# apachectl -t -D DUMP_MODULES | grep " rewrite"

  

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

2.1  停止服务,然后备份文件,进行yum安装程序

[root@cm conf]# systemctl stop httpd.service
[root@cm conf]# cd /usr/local/httpd/conf
[root@cm conf]# ls
extra  httpd.conf  httpd.conf.bak  httpd.conf.bak1  httpd.conf.bak2  magic  mime.types  original
[root@cm conf]# mv httpd.conf httpd.conf.bak3
[root@cm conf]# ls
extra  httpd.conf.bak  httpd.conf.bak1  httpd.conf.bak2  httpd.conf.bak3  magic  mime.types  original
[root@cm conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本
软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本
软件包 zlib-devel-1.2.7-19.el7_9.x86_64 已安装并且是最新版本
无须任何处理

  

2.2  添加 mod rewrite模块

[root@cm conf]# cd /opt/httpd-2.4.29/
[root@cm httpd-2.4.29]# ls
ABOUT_APACHE     build         CMakeLists.txt  configure.in  httpd.mak       libhttpd.dep  Makefile.win  NWGNUmakefile     server
acinclude.m4     BuildAll.dsp  config.layout   docs          httpd.spec      libhttpd.dsp  modules       os                srclib
Apache-apr2.dsw  BuildBin.dsp  config.log      emacs-style   include         libhttpd.mak  modules.c     README            support
Apache.dsw       buildconf     config.nice     httpd         INSTALL         LICENSE       modules.lo    README.cmake      test
apache_probes.d  buildmark.o   config.status   httpd.dep     InstallBin.dsp  Makefile      modules.o     README.platforms  VERSIONING
ap.d             CHANGES       configure       httpd.dsp     LAYOUT          Makefile.in   NOTICE        ROADMAP
[root@cm httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-deflate \
> --enable-expires

  

2.3  重新编译安装

[root@cm httpd-2.4.29]# make -j2 && make install

  

3、配置 mod_rewrite 模块启用

 

下面内容为正确内容

 

4、盗链测试

4.1  在源主机上配置

[root@cm httpd-2.4.29]# cd /usr/local/httpd/htdocs/
[root@cm htdocs]# ls
index.html  meme.jpg
[root@cm htdocs]# rz -E
rz waiting to receive.
[root@cm htdocs]# ls
error.png  index.html  meme.jpg
[root@cm htdocs]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.229.60 www.ly.com
192.168.229.90 www.weq.com

  

4.2 在盗链主机上配置httpd相关配置并创建网页文件以及域名解析

  

  

 

4.3 在盗链主机上访问源主机网站地址

  

  

 

posted on 2021-08-10 11:21  笑洋仟  阅读(114)  评论(0编辑  收藏  举报

levels of contents