【Web服务器】Apache网页优化

文章目录

  • 一、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启用网页压缩功能步骤

【Web服务器】Apache网页优化_第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功能

###设置对什么样的内容进行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”表示压缩已经生效

【Web服务器】Apache网页优化_第2张图片

4.配置网页缓存功能

4.1启用网页压缩功能步骤

【Web服务器】Apache网页优化_第3张图片

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
###--末行添加--

  ###打开网页缓存功能
  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 项

【Web服务器】Apache网页优化_第4张图片

二、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 项

【Web服务器】Apache网页优化_第5张图片

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行--

    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)$ :表示匹配gifjpgswf任意一个,$表示结束。最后的规则是以.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!

###临时添加域名解析 [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

this is accp.com!

###临时添加域名解析 [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

【Web服务器】Apache网页优化_第6张图片

你可能感兴趣的:(Web服务器,服务器,apache,前端)