文章目录
- 一、Apache网页优化概述
- 1.优化内容
- 2.网页压缩
- 2.1gzip概述
- 2.2作用
- 2.3Apache的压缩模块
- 概述
- mod_gzip模块与mod_deflate模块
- 3.配置网页压缩功能
- 3.1启用网页压缩功能步骤
- 3.2具体操作步骤
- 4.配置网页缓存功能
- 4.1启用网页压缩功能步骤
- 4.2具体操作步骤
- 二、Apache安全优化
- 1.隐藏版本信息
- 1.1配置Apache隐藏版本信息
- 2.配置防盗链
- 2.1环境配置
- 2.2盗链模拟步骤
- 2.3配置Apache实现防盗链
一、Apache网页优化概述
在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。
为了适应企业需求,就需要考虑如何提升Apache的i性能与稳定性,这就是Apache优化的内容。
1.优化内容
-
配置网页压缩功能
-
配置网页缓存
-
配置隐藏版本号
-
配置防盗链
2.网页压缩
2.1gzip概述
gzip是一种流行的文件压缩算法,目前应用非常广泛, 尤其是在Linux平台。当使用gzip压缩一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。利用Apache中的gzip模块,可以使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加速的速度。
2.2作用
- 降低了网络传输的字节数
- 加快网页加载的速度 节省流量
- 改善用户的浏览体验 gzip与搜索引擎的抓取工具具有更好的关系
2.3Apache的压缩模块
概述
Apache实现网页压缩的功能模块包括mod_gzip模块与mod_deflate模块。
Apache 1.x
没有内建网页压缩技术,但可使用第三方modgzip 模块执行压缩
Apache 2.x
在开发的时候,内建了mod deflate这个模块,取代mod gzip
mod_gzip模块与mod_deflate模块
- 两者均使用gzip压缩算法,运作原理类似
- mod_ deflate压缩速度略快,而mod_gzip的压缩比略高
- mod_ gzip对服务器CPU的占用要高一些
- 高流量的服务器,使用mod_ deflate可能会比mod_ gzip 加载速度更快
3.配置网页压缩功能
3.1启用网页压缩功能步骤
3.2具体操作步骤
检查是否已安装mod_defalte模块
[root@localhost httpd]# apachectl -t -D DUMP_MODULES | grep "deflate"
如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块
[root@localhost httpd]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# yum install -y zlib-devel
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
###备份主配置文件
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra httpd.conf magic mime.types original
[root@localhost conf]# mv httpd.conf httpd.conf.bak
[root@localhost conf]# systemctl stop httpd.service
###重新编译安装,生成新的配置文件
[root@localhost conf]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# make -j2 && make install
配置 mod_deflate 模块启用
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# vim /usr/local/httpd/conf/httpd.conf
###52行修改,端口号
Listen 192.168.145.15:80
###105行,取消注释,打开模块
LoadModule deflate_module modules/mod_deflate.so
###198行修改,取消注释,设置域名
ServerName www.abc.com:80
###最后一行开启gzip功能
<IfModule mod_deflate.c>
###设置对什么样的内容进行gzi压缩
AddOutputFilterByType DEFLATE text/hml text/plain text/css text/xml text/javascrpit text/jpg text/png
###设置压缩级别1-9之间
DeflateCompressionLevel 9
###启用deflate模块对本站点的输出进行gzip压缩
SetOutputFilter DEFLATE
</IfModule>
...
检查安装情况,启动服务
###验证配置文件的配置是否正确
[root@localhost conf]#apachectl -t
###检查 mod_deflate 模块是否已安装
[root@localhost conf]# apachectl -t -D DUMP_MODULES | grep "deflate"
deflate_module (shared)
###重启服务
[root@localhost conf]# systemctl start httpd.service
测试缓存是否生效
###编写网页文件
[root@localhost conf]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It works!</h1>
<img src="/opt/game.jpg"/>
</body>
</html>
[root@localhost htdocs]# systemctl restart httpd.service
浏览器访问 ,使用F12消息查看
在浏览器中选择“查看元素”可以看到有“AcceptEncoding:gzip”表示压缩已经生效
4.配置网页缓存功能
4.1启用网页压缩功能步骤
4.2具体操作步骤
检查是否安装 mod_expires 模块
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "expires"
如果没有安装mod_expires 模块,重新编译安装 Apache 添加 mod_expires模块
[root@localhost ~]# systemctl stop httpd.service
[root@localhost ~]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra httpd.conf magic mime.types original
[root@localhost conf]# mv httpd.conf httpd.conf.bak1
[root@localhost conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
[root@localhost conf]# cd /opt/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 \
###加入mod_expires 模块
> --enable-expires
###编译安装
[root@localhost httpd-2.4.29]# make -j2 && make install
配置 mod_expires 模块启用
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra httpd.conf httpd.conf.bak1 magic mime.types original
[root@localhost conf]# vim httpd.conf
###--52行--修改
Listen 192.198.145.15:80
###--111行--取消注释
###开启mod_expires 模块
LoadModule expires_module modules/mod_expires.so
###--199行--取消注释,修改
ServerName www.abc.com:80
###--末行添加--
<IfModule mod_expires.c>
###打开网页缓存功能
ExpiresActive On
###设置缓存60秒
ExpiresDefault "access plus 60 seconds"
</IfModule>
检查安装情况,启动服务
###验证配置文件的配置是否正确
[root@localhost conf]# apachectl -t
Syntax OK
###检查 mod_deflate 模块是否已安装
[root@localhost conf]# apachectl -t -D DUMP_MODULES | grep "expires"
expires_module (shared)
###启动httpd服务
[root@localhost conf]# systemctl restart httpd
测试缓存是否生效
在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件
选择 inspectors ---> 选择 Headers
浏览器访问 http://192.168.80.10 ,双击200消息查看 Expires 项
二、Apache安全优化
1.隐藏版本信息
Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患。在生产环境中要配置Apache隐藏版本信息。
1.1配置Apache隐藏版本信息
[root@localhost ~]# cd /usr/local/httpd/conf/
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
###--491行--取消注释
Include conf/extra/httpd-default.conf
[root@localhost conf]# vim extra/httpd-default.conf
###--55行--修改
###将原本的 Full 改为 Prod,只显示名称,没有版本
ServerTokens Prod
###重启httpd服务
[root@localhost conf]# systemctl restart httpd.service
ServerTokens
表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息。
浏览器访问 http://192.168.145.15或者http://www.abc.com
查看 Server 项
2.配置防盗链
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源。如果别人盗用网站的这些静态资源,明显的实惠增大服务器的带宽压力,作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
2.1环境配置
IP地址 | 域名 | 用途 |
---|---|---|
192.168.145.15 | www.abc.com | 源主机 |
192.168.145.30 | www.accp.com | 盗链网站 |
客户端 | Windows11 | 火狐浏览器或者谷歌浏览器 |
2.2盗链模拟步骤
一般配置防盗链需要做以下几个步骤:
● 两台主机配置测试页面
● 盗链网站的测试网页,盗用源主机网站目录下的一个logo.jpg文件
● 在Windows中访问验证
2.3配置Apache实现防盗链
检查是否安装 mod_rewrite 模块
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "rewrite"
如果没有安装mod_rewrite 模块,重新编译安装 Apache 添加 mod_rewrite模块
###停止httpd服务
[root@localhost ~]# systemctl stop httpd.service
###进入主配置文件目录
[root@localhost ~]# cd /usr/local/httpd/conf
[root@localhost conf]# mv httpd.conf httpd.conf.bak2
####安装模块
[root@localhost conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
[root@localhost conf]#cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
###加入mod_rewrite 模块
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires
###重新编译
[root@localhost httpd-2.4.29]#make -j2 && make install
配置 mod_rewrite 模块启用
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# vim httpd.conf
###--224行--
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
###打开 rewrite 功能,加入 mode_rewrite 模块内容
RewriteEngine On
####设置匹配规则
RewriteCond %{HTTP_REFERER} !^http://abc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://abc.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.abc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.abc.com/$ [NC]
###设置跳转动作
RewriteRule .*\.(gif|jpg|swf)$ http://www.abc.com/error.png
</Directory>
RewriteCond %{HTTP_REFERER} !^http://www.abc.com/.*$ [NC]
的字段含义:
%{HTTP_REFERER}
:存放一个链接的 URL,表示从哪个链接中转访问目录下的静态资源。
!^
”:表示不以后面的字符串开头。
http://www.abc.com
”:是本网站的路径,按整个字符串匹配。
.*$
”:表示以任意字符结尾。
[NC]
:表示不区分大小写字母。
RewriteRule .*\.(gif|jpg|swf)$ http://www.abc.com/error.png
的字段含义:
.
:表示匹配一个字符。
*
”:表示匹配 0 到多个字符,与.
合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用+
表示。
“\.
”:在这里的\
是转义符,\.
就代表符号.
的意思。因为.
在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符\
,其它规则字符如果需要匹配,也做同样处理。
(gif|jpg|swf)$
:表示匹配gif
、jpg
、swf
任意一个,$
表示结束。最后的规则是以.gif
、.jpg
、.swf
结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。
http://www.abc.com/error.png
:表示转发到这个路径 。
整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示error.png
这个图片。
网页准备
Web源主机配置
[root@localhost conf]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
error.png game.jpg index.html
[root@localhost htdocs]# cat index.html
<body><h1>It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!</h1>
<img src="game.jpg"/>
</body></html>
[root@localhost htdocs]# echo "192.168.145.15 www.abc.com" >> /etc/hosts
[root@localhost htdocs]# echo "192.168.145.30 www.accp.com" >> /etc/hosts
盗链网站主机
[root@localhost conf]# cd /usr/local/httpd/htdocs
[root@localhost htdocs]# vim index.html
<body><h1>this is accp.com!</h1>
<img src="http://www.abc.com/game.jpg"/>
</body></html>
[root@localhost htdocs]# echo "192.168.145.15 www.abc.com" >> /etc/hosts
[root@localhost htdocs]# echo "192.168.145.30 www.accp.com" >> /etc/hosts
yum安装的httpd服务的默认路径为/var/www/html/
。
在盗图网站主机上进行浏览器验证
http://www.accp.com