Apache网页优化

Apache网页优化

优化内容

  • 配置网页压缩功能
  • 配置网页缓存
  • 工作模式的选择与参数优化
  • 配置隐藏版本号
  • 配置反盗链

网页压缩 

        gzip介绍

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

        作用

  1. 降低了网络传输的字节数,加速网页加载的速度
  2. 节省流量,改善用户的浏览体验
  3. gzip与搜索引擎的抓取工具有着更好的关系

gzip 提供了从 1 到 9 的九个压缩级别,以及一个默认的压缩级别(通常为 6)。级别 1 表示最快压缩速度但压缩率最低,而级别 9 则提供最高的压缩率但会花费最多的压缩时间。

  • 级别 1:最快的压缩速度,但压缩率最低。
  • 级别 9:最慢的压缩速度,但压缩率最高。

Apache实现网页压缩的功能模块包括 

  1. mod_gzip模块
  2. mod_deflate模块

Apache 1.X

没有内建网页压缩技术,但可使用第三方mod_gzip模块执行压缩

Apache 2.X

在开发的时候,内建了mod_deflate这个模块,取代mod_gzip

mod_gzip模块与mod_deflate模块

  1. 两者均使用gzip压缩算法,运作原理类似
  2. mod_deflate压缩速度略快,而mod_gzip的压缩比略高
  3. mod_gzip对服务器cpu的占用要高一些
  4. 高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快

网页优化 

网页压缩

#!/bin/bash
yum -y install wget
wget  https://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz -P /root/
tar -zxf /root/httpd-2.4.25.tar.gz -C /usr/src/
yum -y install gcc gcc-* make
yum -y install apr-util-devel pcre-devel zlib-devel
echo "下载依赖完成"
cd /usr/src/httpd-2.4.25
echo "正在编译安装"
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate && make && make install && echo "编译安装结果" $?

echo "优化执行路径"
ln -s /usr/local/httpd/bin/* /usr/local/bin
echo "添加系统服务"
cat > /lib/systemd/system/httpd.service << 'EOF'
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
EOF

echo "开启httpd服务"
systemctl start httpd
echo "设置httpd服务开机自启动"
systemctl enable httpd
rm -rf /root/httpd-2.4.25.tar.gz

[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 
106行   去掉#号   LoadModule deflate_module modules/mod_deflate.so

末尾加
<IfModule mod_deflate.c>
# 设置压缩级别
DeflateCompressionLevel 6
# 插入过滤器
SetOutputFilter DEFLATE
# 添加过滤类型
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json
# 设置不对后缀 gif,jpg,jpeg,png 的图片文件进行压缩
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
# 设置对文件是文本的内容进行压缩,例如text/html text/css text/plain等
AddOutputFilterByType DEFLATE text/*
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
</IfModule>
[root@bogon ~]# apachectl -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@bogon ~]# systemctl start httpd
[root@bogon ~]# 



apachectl -t -D DUMP_MODULES | grep "deflate"
这个命令的目的是检查 Apache HTTP 服务器是否加载了用于压缩 HTTP 响应的 
deflate 模块(或其等效模块)。如果命令输出包含 "deflate" 字符串的行,则表示该模块已加载。如果没有输出,则表示可能未加载该模块,或者该模块在 Apache 的配置中没有以包含 "deflate" 的方式命名(尽管这种情况很少见)。

apachectl -t -D DUMP_MODULES | grep "deflate" 这个命令的目的是检查 Apache HTTP 服务器是否加载了用于压缩 HTTP 响应的 deflate 模块(或其等效模块)。如果命令输出包含 "deflate" 字符串的行,则表示该模块已加载。如果没有输出,则表示可能未加载该模块,或者该模块在 Apache 的配置中没有以包含 "deflate" 的方式命名(尽管这种情况很少见)。 

网页缓存 

  • 通过mod_expire模块配置Apache,使用网页能在客户端浏览器缓存一段时间,以避免重复请求
  • 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 


113 行 去掉#号  LoadModule expires_module modules/mod_expires.so
结尾加
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>
[root@bogon ~]# systemctl restart httpd
   
    
     

 

Apache安全优化 

        隐藏版本信息

[root@bogon ~]# vi /usr/local/httpd/conf/extra/httpd-default.conf 
 55 ServerTokens Prod        Prod :生产环境
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 
483 行      Include conf/extra/httpd-default.conf


[root@bogon ~]# systemctl restart httpd

 配置反盗链

        环境的准备   

主机

操作系统

主要软件及版本

apache1

CentOS 7.9

httpd-2.4.25.tar.gz

apache1

CentOS 7.9

httpd-2.4.25.tar.gz

客户端

CentOS 7.9Desktop

火狐浏览器

 服务器1(最小化)

[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 
201行 ServerName www.test01.com
[root@bogon ~]# systemctl restart httpd

  服务器2(最小化)

部署httpd 省略
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 
201行 ServerName www.test02.com
[root@bogon ~]# systemctl restart httpd

[root@bogon ~]# cat /usr/local/httpd/htdocs/index.html 
<html><body><h1>It works!</h1>
<img src="http://www.test01.com/logo_jpg.jpg"/>
</body></html>
[root@bogon ~]# 

 服务器3(桌面版)

三台机器都需要写
[root@bogon ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.xxx.xxx www.test01.com
192.168.xxx.xxx www.test02.com

 服务器3(桌面版)验证

服务器1(最小化)
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 
159 LoadModule rewrite_module modules/mod_rewrite.so
    246     AllowOverride ALL
         RewriteEngine On
         # 不已这些开头的就会被重写
         RewriteCond %{HTTP_REFERER} !^http://test01.com/.*$ [NC]
         RewriteCond %{HTTP_REFERER} !^http://test01.com$ [NC]
         RewriteCond %{HTTP_REFERER} !^http://www.test01.com/.*$ [NC]
         RewriteCond %{HTTP_REFERER} !^http://www.test01.com/$ [NC]
         # 重写规则
         RewriteRule .*\.(gif|jpg|swf)$ http://www.test01.com/error.png
[root@bogon ~]# systemctl restart httpd   
 服务器3(桌面版)

 

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值