Apache网页优化和防盗链

Apache网页优化

  • 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容

优化内容

配置网页压缩功能

  • 配置网页缓存
  • 工作模式的选择与参数优化
  • 配置隐藏版本号
  • 配置防盗链
    ……

1、gzip介绍

  • 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
  • 作用
    ●降低了网络传输的字节数,加快网页加载的速度
    ●节省流量,改善用户的浏览体验
    ●gzip与搜索引擎的抓取工具有着更好的关系

2、Apache的压缩模块

  • Apache实现网页压缩的功能模块包括
    mod_ gzip 模块
    mod_ deflate 模块

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

  • Apache 2.x
    在开发的时候,内建了mod_ deflate这个模块,取代mod_gzip

3、mod_ gzip 模块与mod_ deflate 模块

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

网页压缩

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

apachectl -t -D DUMP_MODULES | grep "deflate"

2、检查是否安装 mod_deflate 模块

apachectl -t -D DUMP_MODULES | grep "deflate"

3、如果没有安装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

4.配置 mod_deflate 模块启用

vim /usr/local/httpd/conf/httpd.conf
-----52行修改------
Listen 192.168.121.12: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

在这里插入图片描述

网页缓存

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.bak2
在这里插入代码片
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.121.12: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.121.12,多次刷新后查看响应头中包含 Expires 项

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

在这里插入图片描述

隐藏版本信息

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

ServerTokens  Prod          ## -----55行-----修改
#ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息

systemctl start httpd.service

浏览器访问 http://192.168.121.12 ,双击200消息查看 Server 项

在这里插入图片描述

Apache 防盗链

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

设置盗链主机

yum install -y httpd

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


echo "192.168.121.3 www.dao.com" >> /etc/hosts
echo "192.168.121.12 www.song.com" >> /etc/hosts

systemctl restart httpd

此时别人登陆 192.168.121.3获取到的图片是song.com里的图片
在这里插入图片描述

在服务器上设置防盗链

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 模块启用

上传防盗链的图片
在这里插入图片描述

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    #重启服务

此时用另一台主机访问盗图机的IP,即可看到我们前面上传的防盗链的图片
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值