首页 > 其他分享 >Apache网页优化

Apache网页优化

时间:2024-06-15 18:04:42浏览次数:26  
标签:httpd www 网页 root deflate Apache 优化 mod

一.网页压缩

        网站的访问速度是由多个因素所共同决定的,这些因素包括应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是Apache本身的响应速度。因此当为网站性能所苦恼时,第一个需要着手进行处理的便是尽可能的提升Apache的执行速度,可以使用网页压缩提升应用程序的速度。更重要的是,它完全不需要任何的成本,只不过是会让服务器CPU占用率稍微提升一两个百分点或者更少。

1.gzip介绍

        gzip是一种流行的文件压缩算法,目前应用非常广泛,尤其是在Linux平台。当使用gzip压缩一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。利用Apache中的gzip模块,可以使用gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。

        网页加载速度加快的好处不言而喻。除了节省流量,改善用户的浏览体验外,另一个潜在的好处是gzip与搜索引擎的抓取工具有着更好的关系。

2.HTTP压缩的过程

        Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding信息)。如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名。如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否己经存在请求文件的最新压缩文件。如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲日录中存放请求文件的压缩文件。如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件。如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。

3.Apache的压缩模块

        Apache 1.x系列没有内建网页压缩技术,使用的是额外的第三方mod_gzip模块来执行压缩。而Apache 2.x官方在开发的时候,就把网页压缩考虑进去,内建了mod_deflate这个模块,用来取代mod_gzip。两者都是使用的gzip压缩算法,它们的运作原理是类似的。

        mod_gzip与mod_deflate进行比较,mod_gzip占用CPU资源更高,同时压缩效率更好;而mod_deflate占用的CPU资源更少但是压缩效率较低。所以在流量高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快(虚拟主机)。在网站访问量较小,想快速加载网页,就使用mod_gzip

4.查看浏览器支持那些压缩

Accept_Encoding:gzip,deflate。告诉服务器,浏览器支持的压缩类型有那些 

5.mod_deflate模块

检查是否安装有mod——deflate模块

[root@localhost ~]# 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


[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.conf

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>

 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模块启用

在httpd配置文件中添加(/mod_deflate.so查找到位置后添加)

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>

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

访问网站:

http://192.168.10.101/test1.php 

备注192.168.10.101为配置httpd的服务器地址

进入页面后按F12

二.网页缓存

        网页缓存是将一部分经常不会改变和变动很少的页面缓存,下次浏览器再次访问这些页面时,不需要再次去下载这些页面,从而提高了用户的访问速度
          Apache的mod_expires模块会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

1.配置 mod_expires 模块启用

在httpd的配置文件中搜索mod_expires.so

去掉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.测试mod_expires 模块

访问网站:

http://192.168.10.101/test1.php

三.隐藏版本信息

        软件的漏洞信息和特定版本是相关的。因此,软件的版本号对攻击者来说是很重要的,在浏览器开发者工具中可以看到详细的版本信息。隐藏Apache的版本号,减少受攻击的风险,保护服务器安全运行。

     实现方法

1.修改httpd的配置文件

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

2.修改/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

四.Apache防盗链及配置防盗链

       一般来说,用户浏览一个完整的页面并不是一次性全部传送到客户端的。如果所请求的页面带有图片或其他信息,那么第一个HTTP请求传送的是这个页面的文本,然后通过客户端的浏览器对这段文本进行解释执行。如果发现其中还有图片,那么客户端的浏览器会再次发送一条HTTP请求,当这个请求被处理后这个图片文件才会被传送到客户端,最后浏览器会将图片安放到页面的正确位置,就这样一个完整的页面要经过多次发送HTTP请求才能够被完整的显示。
    基于这样的机制,就会产生盗链问题:如果一个网站中没有其页面中所说图片信息,那么它完全可以链接到其他网站的图片信息上。这样,没有任何资源的网站利用了其他网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担
    HTTP标准协议中有专门的Referer字段记录,它的作用如下。

(1)可以追上一个入站地址是什么。

(2)对于资源文件,可以跟踪到包含显示它的网页地址是什么,因此所有防盗链方法都是基于这个Referer字段。

1:实验环境

主机

域名

IP地址

操作系统

主要软件及版本

apache1

www.benet.com

192.168.10.101

CentOS7.9

httpd-2.4.25.tar.gz

apache2

www.accp.com

192.168.10.102

CentOS7.9

httpd-2.4.25.tar.gz

客户端

client

Windows 10

浏览器

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

(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

3.配置原图网页

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

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

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<html>
<body>
<h1>原图网址</h1>
<img src="金克斯.png"/>
</body>
</html>

访问后页面如下 

 2.盗图网站 

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

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


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<html>
<body>
<h1>盗图网址</h1>
<img src="http://www.henan.com/金克斯.png"/>
</body>
</html>

以上就是盗取图片链接的全过程

3.设置防盗链

在httpd配置文件中配置 mod_rewrite 模块启用

#去掉前面的注释LoadModule rewrite_module modules/mod_rewrite.so

#修改此网站访问参数

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

    AllowOverride None
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://henan.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://henan.com$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.henan.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.henan.com/$ [NC]
    RewriteRule .*\.(gif|png|swf)$ http://www.henan.com/error.jpg

    Require all granted

</Directory>

备注: 

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

  • “!^”: 表示不以后面的字符串开头。
  • “%{HTTP REFERER}”:存放一个链接的URL,表示从哪个链接访问所需的网页。
  • “ http://www.henan.com” : 是本网站的路径,按整个字符串匹配。
  • “.*$”:表示以任意字符结尾。
  • [NC]”: 表示不区分大小写字母。

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

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

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

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

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

  • 最会再次访问盗图网址,会出现以下图片

标签:httpd,www,网页,root,deflate,Apache,优化,mod
From: https://blog.csdn.net/henanxiaoman/article/details/139699718

相关文章

  • SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环
    要在Matlab中实现NGO-TCN-BiGRU-Attention北方苍鹰算法进行多变量时间序列预测,需要按照以下步骤进行:准备数据:首先,准备多变量时间序列数据。确保数据已经进行了预处理,例如归一化或标准化,以便神经网络能够更好地进行学习和预测。构建NGO-TCN-BiGRU-Attention模型:根据算法的......
  • 单调队列优化 dp
    单调队列优化dp适用条件只关注“状态变量”“决策变量”及其所在的维度,如果转移方程形如:\[f[i]=\min_{L(i)≤j≤R(i)}^{}{\{f[j]+cost(i,j)\}}\]则可以使用单调队列优化。具体的,把\(cost(i,j)\)分成两部分,第一部分仅与\(i\)有关,第二部分仅与\(j\)有关。对于每个\(i\)......
  • 智能识别技术在旧物回收系统中的优化策略
    内容概要:智能识别技术在旧物回收系统中的应用已经取得了显著的成效,但如何进一步优化其性能以提高回收效率和准确性,仍是我们需要探讨的问题。本文将针对智能识别技术在旧物回收系统中的优化策略进行探讨。一、算法优化算法是智能识别技术的核心,优化算法可以显著提高系统的识......
  • 使用GPT学术优化软件访问本地llama3-8b大模型
    (硬件环境:笔记本电脑,intel处理器i9-13900HX、64G内存、NVIDIARTX4080(12G)、操作系统windows11家庭版)一、下载中科院GPT学术优化(GPTAcademic)1.在浏览器输入:https://github.com/binary-husky/gpt_academic。在网页的右方找到并点击“Releases”。2.选择适合自己的版本,......
  • Java-云原生优化指南-早期发布--全-
    Java云原生优化指南(早期发布)(全)原文:zh.annas-archive.org/md5/df95e958a0ce92b3b5aecdf89067205b译者:飞龙协议:CCBY-NC-SA4.0第一章:优化与性能定义优化Java(或任何其他类型的代码)的性能通常被视为黑魔法。关于性能分析有一种神秘感——它通常被视为一种由“独行侠黑客,思考......
  • div+css布局实现个人网页设计(HTML期末作业)
    ......
  • DW大学生网页作业制作设计 基于html+css我的家乡贵州网页项目的设计与实现
    家乡旅游景点网页作业制作网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成过渡效果、鼠......
  • Apache配置多个项目公用80端口
    打开Apache的配置文件httpd.conf,通常位于/etc/httpd/conf/httpd.conf或/etc/apache2/httpd.conf。 确保NameVirtualHost*:80指令被解注释(移除#),以启用基于域名的虚拟主机。 为每个网站添加<VirtualHost>配置块:<VirtualHost*:80>ServerAdminwebmaster@e......
  • 美食天下 网页设计 html源码 大作业
    ......
  • 1对1视频聊天源码,优化后的缓存使用效果更好
    1对1视频聊天源码,优化后的缓存使用效果更好缓存是提升1对1视频聊天源码的有效方法之一,尤其是用户受限于网速的情况下,可以提升系统的响应能力,降低网络的消耗。当然,内容越接近于用户,则缓存的速度就会越快,缓存的有效性则会越高。不过,在1对1视频聊天源码的某些特定场景下缓存还需......