Apache网页优化

一、网页压缩

1.网页压缩

网站访问速度影响因素:应用程序响应速度、网络带宽、服务器性能、与客户端之间网络传输速度等。其中最重要的是=一个因素是Apache本身,因此提升Apache执行速度(使用网页压缩)是性价比最高的选择。

(1)gzip介绍

一种流行的文件压缩算法,大约可以减少70%以上的文件大小。利用Apache的gzip模块可使用该算法对网页内容进行压缩后再传输给客户端浏览器,从而加快网页加载速度

(2)HTTP压缩过程

服务器接收到HTTP请求后,先检查浏览器是否支持压缩(Accept-Encoding信息)

如果支持,服务器将检查请求文件的后缀,如HTML,CSS等静态文件,服务器会在压缩缓存目录中查找是否存在最新的压缩文件

如果不存在最新压缩文件,服务器会返回未压缩的请求文件,并在缓存目录中存放该请求的压缩文件

如果存在新压缩文件,则直接返回请求的压缩文件

如果请求是动态文件,则服务器会动态压缩内容并返回浏览器,但内容不会存放到缓存目录中

(3)Apache的压缩模块

Apache 1.x系列没有内江网页压缩技术,使用的是第三方mod_gzip模块进行压缩

2.x系列内建了mod_deflate模块来取代mod_gzip

mod_gzip对服务器cpu占用更高,但压缩效率更高

2.查看浏览器支持哪些压缩

Accept-Encoding: gzip, deflate:告诉服务器, 浏览器支持的压缩类型都有哪些

3.mod_deflate 模块

检查是否安装有mod_deflate模块

root@www \~\]# apachectl -t -D DUMP_MODULES \| grep deflate

(1)安装时启用此功能

安装时编译Apache 添加mod_deflate 模块

root@apache \~\]# tar zxf httpd-2.4.25.tar.gz \[root@apache \~\]# cd httpd-2.4.25/ \[root@apache ttpd-2.4.25\]#./configure\\ --prefix=/usr/local/httpd\\ --enable-so --enable-rewrite\\ --enable-charset-lite\\ --enable-cgi --enable-deflate \[root@apache httpd-2.4.25\]#make \&\& make install \[root@apache httpd-2.4.25\]#ln -s /usr/local/httpd/bin/\* /usr/local/bin

(2)利用apxs为http扩展此功能

如果有apache的源码,可以重新编译并安装一次,新的模块就会添加进去,如果没有源码,或不想重新编译,可以使用apxs扩展此模块,方法如下

root@www \~\]# yum -y install zlib-devel \[root@www \~\]# cd httpd-2.4.25/modules/filters/ \[root@www filters\]# /usr/local/httpd/bin/apxs -i -c -a mod_deflate.c

备注:

-i 安装
-c 编译指定模块
-a 激活模块

(3)配置mod_deflate 模块启用

root@apache\~\]# vim /usr/local/httpd/conf/httpd.conf

添加以下内容:

LoadFile /usr/lib64/libz.so

LoadModule deflate_module modules/mod_deflate.so

<IfModule mod_deflate.c>

DeflateCompressionLevel 6

SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/json

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

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>

备注:

DeflateCompressionLevel 9 #代表压缩级别,范围为1~9

SetOutputFilter DEFLATE #代表启用deflate 模块对本站点的输出进行gzip压缩

可简化为如下代码:

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>

root@www httpd-2.4.25\]# httpd -t \[root@www httpd-2.4.25\]# apachectl restart \[root@localhost httpd-2.4.25\]# apachectl -t -D DUMP_MODULES \| grep deflate deflate_module (shared)

(4)测试mod_deflate 压缩模块是否生效

访问网站:

http://192.168.10.101/test1.php

注意:查看前面测试php的页面

按F12可以打开,

二、网页缓存

1.配置mod_expires 模块启用

root@apache\~\]# vim /usr/local/httpd/conf/httpd.conf LoadModule expires_module modules/mod_expires.so ##去掉前面的注释 \ ExpiresActive On ExpiresDefault "access plus 60 seconds" \

备注:

ExpiresActive On:打开网页缓存功能

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

2.检测httpd.conf 语法

root@www \~\]# apachectl -t

3.重启Apache 服务

root@www \~\]# apachectl restart

4.测试mod_expires 模块

访问网站:

http://192.168.10.101/test1.php

注意:查看前面测试php的页面

三、隐藏版本信息

1.修改主配置文件

root@www \~\]# vim /usr/local/httpd/conf/httpd.conf **去掉前面的注释符** **Include conf/extra/httpd-default.conf**

2.修改httpd-default.conf文件

root@www \~\]# 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.重启并测试

root@www \~\]# apachectl restart

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

四、Apache 防盗链

1.配置防盗链实验环境

(1)实验环境

(2)将第一台服务器直接克隆一个,并修改IP地址为192.168.10.102

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

1.服务器1

root@www \~\]# hostnamectl set-hostname apache1 \[root@www \~\]# bash 2.服务器2 \[root@www \~\]# hostnamectl set-hostname apache2 \[root@www \~\]# bash

3.修改每个主机的hosts文件

192.168.10.101 www.benet.com

192.168.10.102 www.accp.com

(4)编写带有图片的网页(原图网站)

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

root@apache1 \~\]# vim /usr/local/httpd/htdocs/index.html \ \ \It work! \ \ \ \

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

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

root@apache2 \~\]# vim /usr/local/httpd/htdocs/index.html \ \ \dao lian \ **\** \ \

6:客户端测试访问

按F12查看

Apache 1 防盗链设置

(1)配置 mod_rewrite 模块启用

root@apache1 \~\]# vim /usr/local/httpd/conf/httpd.conf #去掉前面的注释 LoadModule rewrite_module modules/mod_rewrite.so #修改此网站访问参数 \ 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 语法

root@apache1 \~\]# apachectl -t

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

相关推荐
令狐少侠201110 分钟前
Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境
linux·python·ubuntu
the_nov15 分钟前
11.多线程-信号量-线程池
linux·c++
郑梓妍33 分钟前
ubuntu改用户权限
服务器·网络·数据库
XAL11 小时前
Docker的备份与恢复
运维·docker·容器
黑蛋同志1 小时前
Anolis系统下安装Jenkins
运维·jenkins
海鸥811 小时前
为 Jenkins Agent 添加污点(Taint)容忍度(Toleration)
运维·jenkins
程序员JerrySUN1 小时前
Linux UART 驱动开发全解析:从原理到实战
linux·运维·驱动开发
热爱运维的小七2 小时前
从数据透视到AI分析,用四层架构解决运维难题
运维·人工智能·架构
博观而约取2 小时前
Linux 和 macOS 终端中常见的快捷键操作
linux·运维·macos
H1346948902 小时前
华为服务器系统备份,想要备份华为服务器系统可以怎么操作?
运维·服务器·负载均衡