Apache网页优化概述
■在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代
■为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容
优化内容:
- 配置网页压缩功能
- 配置网页的缓存时间
- 配置防盗链
- 配置隐藏版本号
一:配置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,编译安装Apache服务
[root@localhost ~]# mkdir /abc
[root@localhost ~]# smbclient -L //192.168.10.56/
[root@localhost ~]# mount.cifs //192.168.10.56/share /abc //挂载及解压安装包
Password for root@//192.168.10.56/share:
[root@localhost ~]# df -h
[root@localhost abc]# tar zvxf apr-1.6.2.tar.gz -C /opt
[root@localhost abc]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
[root@localhost abc]# tar zxvf httpd-2.4.2.tar.gz -C /opt
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.2 rh
//把两个底层运行的工具包移动到httpd源码包的srclib中
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.2/srclib/apr-util
[root@localhost opt]# cd httpd-2.4.2/
[root@localhost httpd-2.4.2]# yum install gcc gcc-c++ pcre pcre-devel zlib-devel make -y
[root@localhost httpd-2.4.2]#
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost httpd-2.4.2]# make && make install
[root@localhost httpd-2.4.2]# grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd
[root@localhost httpd-2.4.2]# vim /etc/init.d/httpd
#首行添加下面三行官方注释语句
#!/bin/sh
#chkconfig:2345 85 15
#description:Apache is a World Wide Web server.
[root@localhost httpd-2.4.2]# chmod +x /etc/init.d/httpd
[root@localhost httpd-2.4.2]# chkconfig --add httpd //把http加入server管理器
[root@localhost httpd-2.4.2]# chkconfig --list httpd
[root@localhost httpd-2.4.2]# chkconfig --level 35 httpd on //设置开机自启动
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf //建立软链接便于管理
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/bin/* /usr/local/bin //建立软链接便于管理命令
[root@localhost init.d]# cd /usr/local/httpd/htdocs
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html
#默认首页内容:添加照片途径
<htmL><body<h1>this is a maomi!</h1>
<img src="mao.jpg"/>
</body</html>
[root@localhost htdocs]# cp /abc/mao.jpg /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
index.html mao.jpg
2,修改主配置文件httpd.conf
[root@localhost httpd-2.4.2]# vim /etc/httpd.conf
#开启并修改域名:
#开启并修改成本机监听地址:
#把ipv6注释掉,Listen前加#号:
#开启压缩功能,把LoadModule前面的#去掉:
ServerName www.kgc.com:80
Listen 192.168.17.129:80
#Listen 80
LoadModule deflate_module modules/mod_deflate.so
#大G到末行,添加:
<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>
3,查看是否安装了mod_deflate模块,并检查语法是否无误
[root@localhost httpd-2.4.2]# apachectl -t -D DUMP_MODULES | grep "deflate" //检验模块
deflate_module (shared)
[root@localhost httpd-2.4.2]# apachectl -t // 检查语法
Syntax OK
4,重启httpd服务
[root@localhost init.d]# systemctl stop firewalld
[root@localhost init.d]# setenforce 0
[root@localhost init.d]# systemctl start httpd
[root@localhost init.d]# netstat -ntap | grep 80
5,访问测试网站,使用抓包工具Fiddler进行数据抓取分析
二:配置网页的缓存时间
■通过mod_expire模块配置Apache ,使网页能在客户端浏览器缓存一段时间,以避免重复请求
■启用mod_expire模块后 ,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
步骤:
1,编译安装Apache服务
注:编译安装时 ,要把mod_expires缓存功能模块 添加进去
" ./configure --enable-expires "
[root@localhost ~]# mkdir /abc
[root@localhost ~]# smbclient -L //192.168.10.56/
[root@localhost ~]# mount.cifs //192.168.10.56/share /abc
Password for root@//192.168.10.56/share:
[root@localhost ~]# df -h
[root@localhost abc]# tar zvxf apr-1.6.2.tar.gz -C /opt
[root@localhost abc]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
[root@localhost abc]# tar zxvf httpd-2.4.2.tar.gz -C /opt
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.2 rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.2/srclib/apr-util
[root@localhost opt]# cd httpd-2.4.2/
[root@localhost httpd-2.4.2]# 配置时添加缓存模块
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-expires \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost httpd-2.4.2]# make && make install
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost httpd-2.4.2]# vim /etc/init.d/httpd
#首行添加下面三行官方注释语句
#!/bin/sh
#chkconfig:2345 85 15
#description:Apache is a World Wide Web server.
[root@localhost httpd-2.4.2]# chmod +x /etc/init.d/httpd
[root@localhost httpd-2.4.2]# chkconfig --add httpd
[root@localhost httpd-2.4.2]# chkconfig --list httpd
[root@localhost httpd-2.4.2]# chkconfig --level 35 httpd on
[root@localhost httpd-2.4.2]# cp /abc/mao.jpg /usr/local/httpd/htdocs
[root@localhost httpd-2.4.2]# cd /usr/local/httpd/htdocs
[root@localhost htdocs]# ls
index.html mao.jpg
[root@localhost htdocs]# vim index.html
#默认首页内容:添加照片途径
<html><body><h1>this is a maomi!</h1>
<img src="mao.jpg"/>
</body></html>
2,修改主配置文件httpd.conf
启用mod_ expires模块 ,并设置http协议下任意格式的文档均60秒后过期
[root@localhost httpd-2.4.2]# vim /etc/httpd.conf
#开启并修改域名:
#开启并修改成本机监听地址:
#把ipv6注释掉,Listen前加#号:
ServerName www.kgc.com:80
Listen 192.168.17.129:80
#Listen 80
#开启缓存模块功能,把LoadModule 前的#号去掉
LoadModule expires_module modules/mod_expires.so
#添加缓存模块内容,缓存时间设置50秒:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
3,查看是否安装了mod_expire模块,并检验语法是否有误
命令:#/usr/local/apache/bin/apachectl -t -D DUMP_ MODULES
如果输出中没有“expires_module (static) ”,则说明编译时没有安装mod_expires
[root@localhost httpd-2.4.2]# apachectl -t -D DUMP_MODULES | grep "expires" 检验expires缓存模块是否安装
expires_module (shared)
[root@localhost httpd-2.4.2]# apachectl -t 检验语法是否有误
4,重启httpd服务
[root@localhost httpd-2.4.2]# service httpd start
[root@localhost httpd-2.4.2]# netstat -ntap | grep 80 //查看httpd端口是否开启
[root@localhost httpd-2.4.2]# systemctl stop firewalld //关闭防火墙
[root@localhost httpd-2.4.2]# setenforce 0 //关闭增强性安全功能
5,访问测试网站,使用抓包工具Fiddler进行数据抓取分析
三:配置Apache实现防盗链
■防盗链就是防止别人的网站代码里面盗用服务器的图片、文件、视频等相关资源.
■如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
■所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用
步骤:
1,正常网站配置:
注:配置编译安装时 ,要把mod_rewrite缓存功能模块 添加进去
" ./configure --enable-rewrite "
[root@localhost ~]# mkdir /abc
[root@localhost ~]# smbclient -L //192.168.10.56/
[root@localhost ~]# mount.cifs //192.168.10.56/share /abc
Password for root@//192.168.10.56/share:
[root@localhost ~]# df -h
[root@localhost abc]# tar zvxf apr-1.6.2.tar.gz -C /opt
[root@localhost abc]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
[root@localhost abc]# tar zxvf httpd-2.4.2.tar.gz -C /opt
[root@localhost abc]# cd /opt
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.2/srclib/apr-util
[root@localhost opt]# cd httpd-2.4.2/
[root@localhost httpd-2.4.2]#
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost httpd-2.4.2]# make && make install
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost httpd-2.4.2]# vim /etc/init.d/httpd
#首行添加下面三行官方注释语句
#!/bin/sh
#chkconfig:2345 85 15
#description:Apache is a World Wide Web server.
[root@localhost httpd-2.4.2]# chmod +x /etc/init.d/httpd
[root@localhost httpd-2.4.2]# chkconfig --add httpd
[root@localhost httpd-2.4.2]# chkconfig --list httpd
[root@localhost httpd-2.4.2]# chkconfig --level 35 httpd on
[root@localhost httpd-2.4.2]# vim /etc/httpd.conf
#开启并修改域名:
#开启并修改成本机监听地址:
#把ipv6注释掉,Listen前加#号:
ServerName www.kgc.com:80
Listen 192.168.17.129:80
#Listen 80
[root@localhost httpd-2.4.2]# yum install bind -y
[root@localhost httpd-2.4.2]# vim /etc/named.conf
#/127 查找,并更改:
#/localhost 查找,并更改:
listen-on port 53 { any; };
allow-query { any; };
[root@localhost httpd-2.4.2]# vim /etc/named.rfc1912.zones
#更改区域数据配置文件
zone "kgc.com" IN {
type master ;
file "kgc.com.zone";
allow-update { none; };
};
[root@localhost named]# cd /var/named/
[root@localhost named]# ls
[root@localhost named]# cp -p named.localhost kgc.com.zone
[root@localhost named]# vim kgc.com.zone
#把末行4个A一行删掉
#末行添加一行,域名对应本机IP地址
www IN A 192.168.17.129
[root@localhost named]# systemctl start named
[root@localhost named]# cp /abc/LAMP/mao.jpg /usr/Local/httpd/htdocs/
[root@Localhost named]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
game.jpg index.htmL
[root@localhost htdocs ]# vim index.html
<htmL><body>
<h1>this is a maomi!</h1>
<img src="mao.jpg"/>
</body>
</html>
[rootalocathost htdocs]# service httpd start
[root@localhost htdocs]# systemctl stop firewalld. service
[root@localhost htdocs]# setenforce 0
2,盗链网站简单配置:
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@Localhost ~]# yum install httpd -y
[root@localhost ~]# cd /var/www/html/
[root@Localhost htm1]# vim index.html
#设置默认首页,添加盗链图片路径,可写域名路径,也可写IP地址为路径
<html>
<body>
<h1>this is test web</h1>
<img src= "http://www.kgc.com/mao.jpg"/>
</body>
</html>
[root@localhost htmL]# systemctl start httpd
3,在Win10测试网页,看盗链网站是否盗链成功
盗链网站 盗链成功,下面设置防盗链。
4,设置防盗链,修改主配置文件httpd.conf
■配置规则变量说明:
%{HTTP_ _REFERER} : 浏览header中的链接字段,存放一个链接的URL ,代表是从哪个链接访问所需的网页
!^ : 不以后面的字符串开头
.*$ : 以任意字符结尾
NC : 不区分大写
R: 强制跳转
■规则匹配说明:
RewriteEngine On : 打开网页重写功能
RewriteCond : 设置匹配规则
RewriteRule : 设置跳转动作
■规则匹配:
如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
●修改配置文件启用防盗链功能并设置规则:
[root@localhost httpd-2.4.2]# vim /etc/httpd.conf
#开启防盗链功能,把#号去掉
LoadModule rewrite_module modules/mod_rewrite.so
在“ #
Require all granted ”后添加:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png [R,NC]
[root@localhost abc]# cp /abc/error.png /usr/local/httpd/htdocs
[root@localhost abc]# cd /usr/local/httpd/htdocs
[root@localhost htdocs]# ls
error.png index.html mao.jpg
5,检验模块并重启服务
[root@localhost httpd-2.4.2]# apachectl -t -D DUMP_MODULES | grep "rewrite" 查看是否安装了mod_rewrite模块
[root@Localhost htdocs]# service httpd restart
6,测试官方网站防盗链设置是否成功
四:配置Apache 隐藏版本信息
Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患,生产环境中要配置Apache隐藏版本信息,可使用Fiddler抓包工具分析
- 配置Apache隐藏版本信息
将主配置文件httpd.conf以下行注释去掉
修改httpd-default. conf文件两个地方
ServerTokens Full修改为ServerTokens Prod
1,未设置版本隐藏功能前,可以看到apache 的版本信息
2,更改配置文件,设置开启隐藏功能
[root@localhost htdocs]# vim /etc/httpd.conf
# 把Include前的#号去掉,开启隐藏版本功能
Include conf/extra/httpd-default.conf
[root@localhost htdocs]#cd /usr/local/httpd/conf/extra
[root@Localhost extra]# vim httpd-default.conf
#ServerTokens Full修改为ServerTokens Prod
#把ServersSignature On修改为ServersSignature Off
ServerTokens Prod
ServersSignature Off
3,重启httpd服务,访问网站,抓包测试版本是否隐藏成功
[root@locathost extra]# service httpd restart