在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。
为了适应企业需求,就需要考虑如何提升Apache的i性能与稳定性,这就是Apache优化的内容。
配置网页压缩功能
配置网页缓存
配置隐藏版本号
配置防盗链
gzip是一种流行的文件压缩算法,目前应用非常广泛, 尤其是在Linux平台。当使用gzip压缩一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。利用Apache中的gzip模块,可以使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加速的速度。
Apache实现网页压缩的功能模块包括mod_gzip模块与mod_deflate模块。
Apache 1.x
没有内建网页压缩技术,但可使用第三方modgzip 模块执行压缩
Apache 2.x
在开发的时候,内建了mod deflate这个模块,取代mod gzip
检查是否已安装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功能
###设置对什么样的内容进行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
...
检查安装情况,启动服务
###验证配置文件的配置是否正确
[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
It works!
[root@localhost htdocs]# systemctl restart httpd.service
浏览器访问 ,使用F12消息查看
在浏览器中选择“查看元素”可以看到有“AcceptEncoding:gzip”表示压缩已经生效
检查是否安装 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
###--末行添加--
###打开网页缓存功能
ExpiresActive On
###设置缓存60秒
ExpiresDefault "access plus 60 seconds"
检查安装情况,启动服务
###验证配置文件的配置是否正确
[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的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患。在生产环境中要配置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 项
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源。如果别人盗用网站的这些静态资源,明显的实惠增大服务器的带宽压力,作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
IP地址 | 域名 | 用途 |
---|---|---|
192.168.145.15 | www.abc.com |
源主机 |
192.168.145.30 | www.accp.com |
盗链网站 |
客户端 | Windows11 |
火狐浏览器或者谷歌浏览器 |
一般配置防盗链需要做以下几个步骤:
● 两台主机配置测试页面
● 盗链网站的测试网页,盗用源主机网站目录下的一个logo.jpg文件
● 在Windows中访问验证
检查是否安装 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行--
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
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
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!