理论+实验·Apache网页优化,提升效率,添加防盗链,隐藏apache版本号

理论+实验·Apache网页优化,提升效率,添加防盗链,隐藏apache版本号

Apache网页优化概述

优化概述

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

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

优化内容

配置网页压缩功能

配置网页缓存

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

配置隐藏版本号

配置防盗链

gzip介绍

介绍

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

作用

降低了网络传输的字节数,加快网页加载的速度

节省流量,改善用户的浏览体验

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:修改配置文件启用压缩功能

3:访问测试

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

#设置对什么样的内容启用gzip压缩

AddOutputFilterByType DEFLATE text/html text/plaintext/css text/xml textjavascript

#压缩级别

DeflateCompressionLevel

#启用deflate模块对本站点的输出进行gzip压缩

SetOutputFilter DEFLATE

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

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

配置网页的缓存时间

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

启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Contro1标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

启用网页缓存功能步骤

1:查看是否安装mod expire模块

2:修改配置文件,启用缓存功能

3:访问测试

查看是否安装了mod_expire模块

​ /usr/local/apache/bin/apachectl -t-D DUMP_ MODULES

​ 如果输出中没有expires_module (static),则说明编译时没有安装mod_expires

如果没有安装,需要重新编译安装

​ ./configure --enable-expires…

​ make && make install

修改httpd.conf配置文件

​ 启用mod-expires模块,并设置http协议下任意格式的文档均60秒后过期

​ ExpiresActive On

​ ExpiresDefault “access plus 60 seconds”

重启httpd服务

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

在浏览器中选择“查看元素"可以看到有"Expires"项表示缓存生效

实验环境

CentOS 7.6 ===>需要编译安装

Win 10 ===>安装fiddler软件监控

实验步骤

#解压缩源码包
[root@localhost opt]# tar -jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar -zxvf apr-1.6.2.tar.gz 
[root@localhost opt]# tar -zxvf apr-util-1.6.0.tar.gz

#移动解压后的源码
[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

#安装后续所需的软件环境
[root@localhost opt]# yum -y install gcc-c++ \
gcc \
make \
zlib-devel \						===>网页压缩需要用到的开发环境
pcre-devel \
expat-devel \
perl

#进入目录设置安装目录并配置信息
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-deflate \					===>网页压缩
--enable-expires \					===>网页缓存
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cg 

#编译安装
[root@localhost httpd-2.4.29]#  && make install

#修改配置文件
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
......
ServerName www.test.com:80									===>注释去掉,example改成test
......
Listen 20.0.0.26:80											===>注释去掉改成20.0.0.26
#Listen	80													===>加注释
......
LoadModule deflate_module modules/mod_deflate.so			===>注释去掉
......	
LoadModule expires_module modules/mod_expires.so			===>注释去掉
......
<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>
<IfModule mod_expires.c>									===>追加写入(网页缓存)
ExpiresActive On
ExpiresDefault "access plus 300 seconds"
</IfModule>

#验证语法错误
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/apachectl -t
Syntax OK															===>表示语法没有问题

#验证模块的开启
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/apachectl -t -D DUMP_MODULES | grep "deflate"															
deflate_module (shared)												===>表示已开启
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/apachectl -t -D DUMP_MODULES | grep "expires"	
expires_module (shared)												===>表示已开启

#修改网页html文件
[root@localhost opt]# cd /usr/local/httpd/htdocs/		===>找一张图片放入该目录
[root@localhost htdocs]# vim index.html
<h1>this is test web</h1>
<img src="test.jpg"/>									===>图片名称test.jpg

#关闭防火墙,关闭核心防护,开启服务,验证服务的开启
[root@localhost htdocs]# systemctl stop firewalld
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# /usr/local/httpd/bin/apachectl 
[root@localhost htdocs]# netstat -antp | grep httpd
tcp        0      0 20.0.0.26:80            0.0.0.0:*               LISTEN      113136/httpd  

实验结果

Win 10上面安装fiddler软件抓包测试

image-20200806093237866

配置Apache实现防盗链

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

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

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

使用三台主机模拟盗链

​ 三台主机配置与功能

IP地址 域名 用途
192.168.2.19 www.test.com 源主机
192.168.2.4 www.dt.com 盗链网站
客户端 Windows 10 浏览器

盗链模拟步骤

1:两台主机配置测试页面

2:盗链网站的测试网页,盗用源主机网站目录下的一个test.jpg文件

3:在Windows中访问验证

检查Apache是否安装了mod-rewrite模块

​ /usr/local/apache/bir/lapachectl -t-D DUMP MODULES

​ 如果输出中没有rewrite-module (static),则说明编译时没有安装mod_rewrite模块

如果没有安装,需要重新编译安装

​ ./configure–enable-rewrite…

​ make &&make install

配置规则变量说明

​ %{HTTP REFERER):浏览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页

​ !^:不以后面的字符串开头

​ .*$:以任意字符结尾

​ NC:不区分大写

​ R:强制跳转

规则匹配说明

RewriteEngine On:打开网页重写功能

RewriteCond:设置匹配规则

RewriteRule:设置跳转动作

规则匹配

如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配

配置操作演示

​ 修改配置文件启用防盗链功能并设置规则

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

配置Apache隐藏版本信息

Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患

生产环境中要配置Apache隐藏版本信息

配置Apache隐藏版本信息

​ 将主配置文件httpd.conf以下行注释去掉

​ #lnclude conf/extra/httpd-default.conf

​ 修改httpd-default.conf文件

​ ServerTokens Full修改为ServerTokens Prod

重启httpd服务,访问验证

实验环境

CentOS 7.6 两台 (IP 20.0.0.20;20.0.0.21)

Win 10

实验步骤

在20.0.0.21上配置

#解压源码包
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz

#移动解压后的源码包
[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

#进入源码包内
[root@localhost opt]# cd httpd-2.4.29/

#安装后续所需的软件环境
[root@localhost httpd-2.4.29]# yum -y install gcc-c++ \
gcc \
make \
zlib-devel \
pcre-devel \
expat-devel \
perl

#设置安装目录及开启一些功能
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cg 

#编译安装
[root@localhost httpd-2.4.29]# make && make install

#拷贝一下方便操作
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

#建立软链接
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/

#修改配置文件
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
......
Listen 20.0.0.21:80
#Listen 80
......
ServerName www.test.com:80
......
LoadModule rewrite_module modules/mod_rewrite.so	
......
     Require all granted
     RewriteEngine On
     RewriteCond %{HTTP_REFERER} !^http://test.com/.*$[NC]
     RewriteCond %{HTTP_REFERER) !^http://test.com$[NC]
     RewriteCond %{HTTP_REFERER} !^http://www.test.com/.*$[NC]
     RewriteCond %{HTTP_REFERER) !^http://www.test.com$[NC]
     RewriteRule .*\.(gif|jpg|swf)$ http://www.test.com/error.jpg
......
lnclude conf/extra/httpd-default.conf				===>注释去掉
......

#修改httpd-default.conf
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/extra
[root@localhost extra]# vim httpd-default.conf
ServerTokens Full修改为ServerTokens Prod		===>实现隐藏apapche版本信息

#修改网页
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
<img src="test.jpg"/>				需将图片放入htdocs目录下

#关闭核心防护,关闭防火墙,开启服务
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# systemctl stop firewalld
[root@localhost htdocs]# service httpd start

#安装DNS
[root@localhost htdocs]# yum -y install bind

#修改主配置文件
[root@localhost htdocs]# vim /etc/named.conf 
......
listen-on port 53 { any; };
......
allow-query     { any; };

#修改区域配置文件
[root@localhost htdocs]# vim /etc/named.rfc1912.zones 
......												添加这几行
zone "test.com" IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
};

#修改区域数据配置文件
[root@localhost htdocs]# cp -p /var/named/named.localhost /var/named/test.com.zone
[root@localhost htdocs]# vim /var/named/test.com.zone 
......												追加这一行信息
www     IN      A       20.0.0.21

#开启服务
[root@localhost htdocs]# systemctl start named

在20.0.0.20上配置

#安装httpd
[root@dt ~]# yum -y install httpd

#修改配置文件
[root@dt ~]# vim /etc/httpd/conf/httpd.conf
......
Listen 20.0.0.20:80
#Listen 80
......
ServerName www.dt.com:80

#配置网页
[root@dt ~]# vim /var/www/html/index.html
<h1>this is dt web</h1>
<img src="http://www.test.com/test.jpg"/>

#开启服务,关闭核心防护,关闭防火墙
[root@dt ~]# systemctl restart httpd
[root@dt ~]# setenforce 0
[root@dt ~]# systemctl stop firewalld

实验结果

在win 10 浏览器上输入"20.0.0.20"

image-20200806190601825
在win 10 浏览器上输入"www.test.com"可以看到已经隐藏了apache的版本号

image-20200806192131032

猜你喜欢

转载自blog.csdn.net/weixin_47153668/article/details/107847868