Apache网页优化

1.掌握Apache网页压缩

(1)网页压缩

  • 作用:可以使用网页压缩提升应用程序的速度,而且不需要成本
  • gzip:可以使用gzip的压缩算法来对apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。而且使用gzip与搜索引擎的抓取工具有着更好的关系。
  • HTTP的压缩过程:Web 服务器接收到浏览器的 HTTP 请求后,检查浏览器是否支持 HTTP压缩(Accept-Encoding 信息)。如果浏览器支持 HTTP 压缩,Web 服务器检查请求文件的后名。如果请求文件是 HTML、CSS 等静态文件,Web 服务器到压缩缓冲目录中检查是否已经存在。请求文件的最新压缩文件。如果请求文件的压缩文件不存在,Web 服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件。如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件。如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
  • Aapache的压缩模块:Apache 2.x内建了mod_deflate这个模块,用以取代mod_gzip。两者都是使用了gzip的压缩算法。一般来说,mod_gzip会比mod_deflate多4%-6%的压缩量,但是mod_gzip对服务器的CPU占用要高一些。简而言之,如果网站访问量较小,想要加快网页的加载速度,就使用 mod_gzip。虽然会额外耗费一些服务器资源,但也是值得的。如果网站访问量较大,并且使用的是共享的虚拟主机,所分配系统资源有限的话,使用mod defate 将会是更好的选择。
    Apache 2.4.25 版本中 mod deflate 模块,可使用 DeflateCompressionLevel 指令设置压缩级别。该指令的值可为1(压缩速度最快,最低的压缩质量)至9(最慢的压缩速度,压缩率最高)之间的整数,其默认值为6(压缩速度和压缩质量较为平衡的值)。这个简单的变化更是使得 mod defate 可以轻松媲美 mod gzip 的压缩

安装mod_deflate模块

1.检查是否安装了mod_deflate模块

apachectl  -t  -D DUMP_MODULES  |  grep  "deflate"

2.重新编译Apache添加mod_deflate

cd   httpd.2.4.25

./configure  --enable-deflate

make && make install

3.配置mod_deflate模块启用

在hpptd.conf文件,开启mod_deflate.so配置项,在文本末尾添加一下参数

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

2.利用apxs为http扩展功能

cd /usr/local/httpd/bin

apxs  -i  -c  -a  mod_deflate.c   备注:-i 安装   -c 编译指定模块 -a激活模块  

配置mod_deflate模块启用

vim  /usr/local/httpd/conf/httpd.conf

添加以下代码:

LoadFile /usr/lib64/libz.so

LoadModule deflate_module     modules/mod_deflate.so

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

httpd -t             //检查一下语法有无错误

systemctl  restart   httpd     

apachectl -t -D DUMP_MODULES | grep deflate deflate_module

3.测试mod_deflate模块是否生效

访问网站http://192.168.10.101/test1.php

2.掌握Apache网页缓存

1.配置mod_expires模块启用

vim  /usr/local/httpd/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so ##去掉前面的注释

<IfModule mod_expires.c>

ExpiresActive On

ExpiresDefault "access plus 60 seconds"

</IfModule>

备注:

ExpiresActive On:打开网页缓存功能

ExpiresDefault "access plus 60 seconds" :设置缓存60秒

2.检查httpd.conf语法

httpd  -t

3.重启Apache服务

systemctl   restart   httpd

4.测试mod_expires模块

访问网站http://192.168.10.101/text1.php

3.掌握Apache网页防盗链

1.配置防盗链实验环境

2.新开一台虚拟机

3.修改两台服务器的主机名

(1)服务器1(主机1)

hostnamectl  set-hostname  apa1

bash

(2)服务器2(主机2)

hostnamectl  set-hostname  apa2

bash

(3)修改每个主机的host文件‘

192.168.10.101 www.benet.com

192.168.10.102 www.accp.com

(4)编辑带有图片的网页

将图片文logo.jpg件拷贝到apache的网站根目录下并修改网页文件

 vim /usr/local/httpd/htdocs/index.html

<html>

<body>

<h1>It work! </h1>

<img src="logo.jpg"/>

</body>

</html>

(5)用另一台apache服务器盗链(盗图网站)

www.accp.com 服务器,修改 index.html 文件,加入盗取图片链接

[root@apache2 ~]# vim /usr/local/httpd/htdocs/index.html

<html>

<body>

<h1>dao lian </h1>

<img src="http://www.benet.com/logo.jpg" />

</body>

</html>

(6)客户端测试访问

4.为Apache1防盗链设置

(1)配置mod_rewrite模块启用

vim  /usr/local/httpd/conf/httpd.conf

#去掉前面的注释

LoadModule rewrite_module modules/mod_rewrite.so

#修改此网站访问参数

<Directory "/usr/local/httpd/htdocs">

AllowOverride None

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://benet.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://benet.com$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.benet.com/$ [NC]

RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png

Require all granted

</Directory>

[root@apache1 ~]# systemctl restart httpd

备注:

AllowOverride ALL

通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里,这时就需要将AllowOverride 的参数设置为ALL。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override。如果AllowOverride 的参数设置为None,需要将rewrite规则直接写在httpd的主配置文件中。

RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.$ [NC] 的字段含义:

  • “%{HTTP REFERER}”:存放一个链接的URL,表示从哪个链接访问所需的网页。

  • “!^”: 表示不以后面的字符串开头。

  • “ http://www.benet.com” : 是本网站的路径,按整个字符串匹配。

  • “.*$” : 表示以任意字符结尾。

  • “[NC]”: 表示不区分大小写字母。

RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png的字段含义:

  • “.”: 表示匹配一个字符。

  • “*”:表示匹配0 到多个字符,与“.”合起来的意思是匹配0到多次前面的任意字符,如果是1到多次匹配可以用“+”表示。

  • “\.”: 在这里的“\“是转义符,”." 就代表符号“.”的意思。因为“. ”在指令中是属于规则字符,有相应的含义,如果需要匹配,需要在前而加个转义符"\”,其它规则字符如果需要匹配,也做同样处理。

  • “(gif|jpg|swf)”: 表示匹配“gif”、“jpg”、“swf"任意一个, “$”表示结束。最后的规则是以“.gif”、 “.jpg”、 ".swf”结尾。

RewriteRule中不要添加png的格式,否则客户端看不到error图片

2)检测 httpd.conf 语法

 apachectl -t

复制 error.png 这个图片到benet站点的工作目录 /usr/local/httpd/htdocs,再次访问网站

5.掌握Apache隐藏版本信息

1.修改主配置文件

vim  /usr/local/httpd/conf/httpd.conf

去掉前面的注释符:  Include conf/extra/httpd-default.conf

2.修改httpd-default.conf文件

vim  /usr/local/httpd/conf/extra/httpd-default.conf

ServerTokens   Prod

ServerTokens字段代表显示格式,各种格式如下:

Prod    Server:Apache

Major   Server:Apache/2

Minor   Server:Apache/2.4

OS     Server: Apache/2.4.25 (Unix)

Full     Server: Apache/2.4.25 (Unix) PHP/4.2.2 MyMod/1.2

3.重启并测试

systemctl  restart   httpd 

 查看响应头,Server字段只显示Apache,不再显示版本信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值