Linux--Apache网页优化与安全优化(网页压缩、网页缓存、配置防盗链、隐藏版本信息)

一:Apache网页优化概述

在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容。

  • 网页压缩
  • 网页缓存

1.1:网页压缩

1.1.1:gzip介绍

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

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

1.1.2:Apache的压缩模块

mod_gzip模块与mod_deflate模块

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

Apache 1.x:没有内建网页压缩技术,但可使用第三方模块mod_gzip执行压缩
Apache 2.x:在开发的时候内建了mod_deflate这个模块,取代mod_gzip

1.1.3:配置网页压缩功能

1.1.3.1:解压http压缩包
[root@localhost opt]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  rh
[root@localhost opt]# tar xzvf apr-1.6.2.tar.gz
[root@localhost opt]# tar xzvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xjvf httpd-2.4.29.tar.bz2 
[root@localhost opt]# ls
apr-1.6.2  apr-1.6.2.tar.gz  apr-util-1.6.0  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2  rh
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
1.1.3.2:安装Apache所需环境的软件包
yum install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel -y
1.1.3.3:指定安装路径,配置功能模块
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \    #指定安装路径
> --enable-so \  #开启核心功能
> --enable-rewrite \   #开启重写模块,便于设置防盗链
> --enable-charset-lite \   #指定字符集
> --enable-cgi \  #开启通用网关接口协议
> --enable-expires \  #开启压缩功能
> --enable-deflate  #开启网页缓存功能
1.1.3.4:编译安装
[root@localhost httpd-2.4.29]# make && make install
1.1.3.4:优化执行路径
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf   #建立主配置文件的软链接,方便后期修改
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/  #把可执行命令添加到命令的搜索路径中
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd  #把httpd服务交给service管理
1.1.3.5:修改主配置文件
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
LoadModule deflate_module modules/mod_deflate.so  #开启deflate压缩模块
Listen 192.168.209.134:80  #开启ipv4监听
#Listen 80 #关闭ipv6监听
ServerName www.kgc.com:80  #设置域名
#在末尾加入以下字段
<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@localhost httpd-2.4.29]# apachectl -t   #验证语法是否正确
Syntax OK
1.1.3.6:验证mod_deflate模块是否启用
[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep "deflate"
 deflate_module (shared)
1.1.3.7:在站点首页文件中加入一张图片
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# rz -E   #用xshell连接,可直接拖进来
rz waiting to receive.
[root@localhost htdocs]# ls
animal.jpg  index.html
[root@localhost htdocs]# vim index.html 

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

1.1.3.8:启动Apache服务
[root@localhost htdocs]# iptables -F
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# service httpd start
1.1.3.8:访问Apache站点用fiddler抓包工具验证图片在传输过程中是否进行了压缩

在这里插入图片描述

1.2:配置网页的缓存

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

1.2.1:修改主配置文件

在前面的编译安装中已经加入了mod_expire模块

LoadModule expires_module modules/mod_expires.so  #开启此模块
#在末尾加入以下字段
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 50 seconds"
</IfModule>

1.2.2:验证语法

[root@localhost htdocs]# apachectl -t
Syntax OK

1.2.3:验证mod_expires模块是否启动

[root@localhost htdocs]# apachectl -t -D DUMP_MODULES | grep "expires"
 expires_module (shared)

1.2.4:重启Apache服务

[root@localhost htdocs]# service httpd restart

1.2.5:访问Apache站点用fiddler抓包工具查看缓存是否生效

在这里插入图片描述

二:Apache安全优化

2.1:配置防盗链

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

2.1.1:实验环境

主机信息主机功能
server1(192.168.209.134)www.kgc.com被盗链服务器
server2(192.168.209.142)www.benet.com盗链服务器
客户端 window访问验证

2.1.2:server1配置

安装bind软件包,对www.kgc.com、www.benet.com进行域名解析,此处不再介绍,可观看之前的DNS域名解析的博客

2.1.3:server2配置模拟盗链

yum安装httpd软件包,修改配置文件的监听地址和域名
写一个首页文件

[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html 
<h1>this is daolian web!</h1>
<img src="http://www.kgc.com/animal.jpg"/>   #图片地址为server1站点中的连接地址
#指定DNS服务器用来解析域名
[root@server2 html]# echo "nameserver 192.168.209.134" > /etc/resolv.conf 

之后重启http服务

2.1.4:客户端验证

打开客户端,选定DNS服务器的地址192.168.209.134
访问被盗链服务器和盗链服务器
在这里插入图片描述
在这里插入图片描述
可以看到盗链服务器网站中并没有放入图片,成功盗用了其他网站的图片

2.1.5:server1修改配置文件防止盗链

注意:Apache在编译安装时需要安装rewrite模块,如果没有,需要重新编译安装,前面已经安装,不再描述
配置规则变量说明:

  • %{HTTP_REFERER}:游览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页
  • !^:不以后面的字符串开头
  • .*$:以任意字符串结尾
  • NC:不区分大小写
  • R:强制跳转
  • RewriteEngine On:打开网页重写功能
  • RewriteCond:设置匹配规则
  • RewriteRule:设置跳转动作
  • 如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
[root@server1 htdocs]# vim /usr/local/httpd/conf/httpd.conf 

#开启重写模块
LoadModule rewrite_module modules/mod_rewrite.so
#在站点目录标签里加入
249     RewriteEngine On
250     RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
251     RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
252     RewriteCond %{HTTP_REFERER} !^http://WWW.kgc.com/.*$ [NC]
253     RewriteCond %{HTTP_REFERER} !^http://www.kgc.com$ [NC]
254     RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png
# 把错误图片上传到站点目录
[root@server1 htdocs]# ls
animal.jpg  index.html
[root@server1 htdocs]# rz -E
rz waiting to receive.
[root@server1 htdocs]# ls
animal.jpg  error.png  index.html

2.1.6:客户端再次验证

在这里插入图片描述
可以看到防盗链已经生效

2.2:隐藏版本信息

  • 正常访问Apache网站用Fiddler抓包工具进行查看
    在这里插入图片描述
  • 修改配置文件,隐藏版本信息
[root@server1 htdocs]# vim /usr/local/httpd/conf/httpd.conf
496 Include conf/extra/httpd-default.conf   #开启
[root@server1 htdocs]# cd /usr/local/httpd/conf/extra/
[root@server1 extra]# ls
httpd-autoindex.conf  httpd-info.conf       httpd-mpm.conf                 httpd-userdir.conf
httpd-dav.conf        httpd-languages.conf  httpd-multilang-errordoc.conf  httpd-vhosts.conf
httpd-default.conf    httpd-manual.conf     httpd-ssl.conf                 proxy-html.conf
[root@server1 extra]# vim httpd-default.conf 
55 ServerTokens Prod   #把Full改为Prod
  • 重启服务,客户端访问继续用Fiddler抓包查看
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值