Apache服务—网页优化、安全优化(压缩模块、缓存时间、防盗链和隐藏版本信息)

Apache网页优化

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

gzip介绍

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

  • 降低了网络传输的字节数,加快网页加载的速度
  • 节省流量,改善用户的浏览体验

Apache的压缩模块

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

  • mod_gzip 模块
  • mod_deflate 模块

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

Apache 2.X在开发的时候,内建了mod_deflate这个模块,取代mod_gzip

mod_gzip 模块与mod_deflate 模块,两者均使用gzip压缩算法,运作原理类似

  • mod_deflate压缩速度略快,而mod_gzip的压缩比略高
  • mod_gzip对服务器CPU的占用要高一些
  • 高流量的服务器,使用mod_deflate可能会比mod_gzip 加载速度更快

配置网页压缩功能

  1. 启动网页压缩功能步骤

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

  2. 检查是否已安装mod_deflate模块

    执行apachectl -t -D DUMP_ MODULES命令

    如果输出中没有deflate_ module (static), 说明编译时没有安装mod_deflate模块

  3. 若没有安装,则要重新编译安装

    ./configure --enable-deflate

    make && make install

  4. 在配置httpd.conf中配置开启gzip功能

  5. 重启Apache服务,再用浏览器访问测试网站

  6. 在浏览器中选择“查看元素”可以看到有"Accept-Encoding:gzip"表示压缩已经生效

网页压缩功能实验步骤

相关软件包
在这里插入图片描述

手工编译安装Apache服务

[root@localhost httpd]# tar zxvf apr-1.6.2.tar.gz
[root@localhost httpd]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost httpd]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost httpd]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost httpd]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]# yum -y install \
gcc \			#编译器
gcc-c++ \		#编译器
make \		    #make工具
pcre-devel \	#支持正则表达式的工具
expat-devel \   #使网站能解析标签语言的工具
perl			#Perl语言工具
zlib-devel
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \		#指定路径
> --enable-so \					    #开启核心功能模块
> --enable-rewrite \			    #开启重写功能,如防盗链保护
> --enable-charset-lite \			#开启字符集
> --enable-cgi	\				    #开启通用网关接口
> --enable-deflate					#开启deflate压缩模块
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf  
#创建软连接方便管理

编辑配置文件

[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
Listen 192.168.110.10:80
#Listen 80
ServerName www.aaa.com:80
...
LoadModule headers_module modules/mod_headers.so  #这三条全部开启
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so
...
<IfModule mod_deflate.c>       #在末尾加入
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascrip text/jpg text/png
  DeflateCompressionLevel 9
  SetOutputFilter DEFLATE
</IfModule>
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd -t 
#使用apachectl工具检查是否配置正确
Syntax OK

启动服务

[root@localhost httpd-2.4.29]# setenforce 0 
[root@localhost httpd-2.4.29]# iptables -F
 [root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd #开启服务
[root@localhost httpd-2.4.29]# netstat -natp | grep 80
tcp        0      0 192.168.110.10:80       0.0.0.0:*               LISTEN      44071/httpd 
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/bin/ 
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES |grep "deflate" #查看模块
 deflate_module (shared)

验证网页压缩功能

[root@localhost htdocs]# ls   #添加一张名为b的图片
index.html  b.jpg
[root@localhost htdocs]# vim index.html 
<html><body><h1>It works!</h1>
<img src="b.jpg"/>
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start

在Windows10中安装fiddler软件
在这里插入图片描述
使用fiddler工具抓包
在这里插入图片描述
支持压缩

网页缓存时间

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

  1. 启用网页缓存功能步骤
    查看是否安装mod_expire→修改配置文件启用缓存功能→访问测试
  2. .查看是否安装mod_expire模块
    /usr/local/apache/bin/apachectl -t -D DUMP_MODULES
    如果输出中没有expires_module (static),则说明编译时没有安装mod_expires
  3. 如果没有安装,需要重新编译安装
    ./configure - -enable-expires
    make && make install
  4. 修改httpd.conf配置文件
    启用mod_expires模块,并设置http协议下任意格式的文档均60秒后过期
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 60 seconds"
</IfModule>
  1. .重启Apache服务,再用浏览器访问测试网站
  2. 在浏览器中选择“查看元素”可以看到有”Expires“项表示缓存生效

实验步骤

配置Apache服务增加缓存功能

[root@localhost httpd-2.4.29]# ./configure \
--enable-expires 

编辑配置文件

[root@localhost opt]# vim /etc/httpd.conf
LoadModule expires_module modules/mod_expires.so  #开启模块
...
<IfModule mod_expires.c>      #配置文件末尾添加
ExpiresActive On
ExpiresDefault "access plus 50 seconds"  #设置缓存时间50秒
</IfModule>

进行测试

[root@localhost opt]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl -t  #测试配置文件是否正确
Syntax OK
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires"  查看模块
expires_module (shared)
[root@localhost bin]# ./apachectl restart   #重启Apache服务

在这里插入图片描述

Apache安全优化

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

配置Apache实现防盗链

  1. 检查Apache是否安装了mod_rewrite模块

    /usr/local/apache/bin/apachectl -t -D DUMP_MODULES

  2. 如果输出中没有rewrite_module(static),则说明编译时没有安装mod_rewrite模块

  3. 若没有安装则需要重新编译安装
    /configure --enable-rewrite
    make && make install

实验步骤

配置DNS服务

[root@localhost ~]# yum -y install bind
[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { any;};	
...省略内容
        allow-query     { any; };	
[root@localhost ~]# vim/etc/named.rfc1912.zones
zone "aaa.com" IN {
        type master;
        file "aaa.zone";
        allow-update { none; };
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost aaa.com.zone
[root@localhost named]# vim aaa.com.zone
www IN  A       192.168.110.10
[root@localhost named]#vim /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
<img src="b.jpg">
[root@localhost named]# iptables -F
[root@localhost named]# setenforce 0
[root@localhost named]# systemctl start named

在这里插入图片描述
盗链网站配置httpd服务

[root@csdn ~]# iptables -F
[root@csdn ~]# setenforce 0
[root@csdn ~]# yum install httpd -y
[root@csdn ~]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.110.15:80
#Listen80
ServerName www.bbb.com: 80
[root@csdn ~]# cd /var/www/html/
[root@csdn html]# vim index.html
<h1>bbb</h1>
<img src="http://www.aaa.com/b.jpg"/>		#指向源服务器的图片
[root@csdn html]# systemctl start httpd.service 

在这里插入图片描述
开启防盗链服务

开启防盗链服务
[root@localhost bin]# vim /etc/httpd.conf 
LoadModule rewrite_module modules/mod_rewrite.so #去掉注释
<Directory "/usr/local/httpd/htdocs">
.....省略内容
  	RewriteEngine On		#添加此6行内容
    RewriteCond %{HTTP_REFERER}!^http://aaa.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER}!^http://aaa.com$ [NC]
    RewriteCond %{HTTP_REFERER}!^http://www.aaa.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER}!^http://www.aaa.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.aaa.com/q.jpg
</Directory>
[root@localhost bin]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
b.png index.html q.jpg  #添加配置文件中的q图片
[root@localhost htdocs]# cd .. 
[root@localhost httpd]# cd bin
[root@localhost bin]# ./apachectl stop 
[root@localhost bin]# ./apachectl start

盗链网站清除缓存重新登陆
在这里插入图片描述

配置Apache隐藏版本信息

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

  1. 将主配置文件httpd.confl以下行注释去掉

    #Include conf/extra/httpd-default.conf

  2. 修改httpd-default.conf文件

    Server Tokens Full修改为Server Tokens Prod

在这里插入图片描述
修改配置文件

[root@localhost bin]# vim /etc/httpd.conf
...
Include conf/extra/httpd-default.conf      #将此行注释去掉
[root@localhost bin]# cd /usr/local/httpd/conf/extra
[root@localhost extra]# vim httpd-default.conf
ServerTokens Prod        #Server Tokens Full修改为Server Tokens Prod
[root@localhost extra]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CN_PanHao/article/details/107882960