小阿轩yx-Apache 网页优化

小阿轩yx-Apache 网页优化

网页压缩与缓存

对Apache服务器优化配置

  • 能让 Apache 发挥出更好的性能

相反,配置糟糕

  • Apache可能无法正常服务

网页压缩

网站的访问速度是由多个因素所共同决定的

包括应用程序

  • 响应速度
  • 网络带宽
  • 服务器性能
  • 与客户端之间的网络传输速度等等

(注:其中最重要的一个因素是 Apache本身的响应速度)

网站性能需要着手进行处理

  • 尽可能的提升 Apache 的执行速度
  • 可以使用网页压缩提升应用程序的速度

更重要的好处

  • 它完全不需要任何的成本

(注:只不过是会让服务器 CPU 占用率稍微提升一两个百分点或者更少)

gzip 介绍
  • 是一种流行的文件压缩算法
  • 目前应用非常广泛,尤其是在 Linux 平台

好处

  • 大约可以减少 70%以上的文件大小
  • 经过压缩后,实际上降低了网络传输的字节数

(注:最明显的好处就是可以加快网页加载的速度)

网页加载速度加快的好处

  • 节省流量
  • 改善用户的浏览体验外
  • 另一个潜在的好处是 gzip 与搜索引擎的抓取工具有着更好的关系
HTTP 压缩的过程

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

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

Apache 1.x系列

  • 没有内建网页压缩技术
  • 使用的是额外的第三方 mod gzip 模块来执行压缩

Apache 2.x

  • 官方在开发的时候,就把网页压缩考虑进去
  • 内建了 mod deflate 这个模块,用以取代 mod_gzip

(注:两者都是使用的 gzip 压缩算法,它们的运作原理是类似的

区别
  • mod deflate 压缩速度略快
  • mod gzip 的压缩比略高

一般默认情况下

  • mod_gzip会比 mod deflate 多出 4%~6%的压缩量

一般来说

  • mod_gzip 对服务器 CPU 的占用要高一些
  • mod deflate 是专门为确保服务器的性能而使用的一个压缩模块
  • mod deflate 需要较少的资源来压缩文件

高流量的服务器

  • 使用 mod deflate 可能会比 mod_gzip 加载速度更快

简而言之

  • 如果网站访问量较小,想要加快网页的加载速度,就使用mod_gzip。虽然会额外耗费一些服务器资源,但也是值得的。
  • 如果网站访问量较大,并且使用的是共享的虚拟主机,所分配系统资源有限的话,使用mod_deflate 将会是更好的选择。

Apache 2.4.25 版本中 mod deflate 模块

可使用 DeflateCompressionLevel 指令设置压缩级别

  • 该指令的值可为1(压缩速度最快,最低的压缩质量)至9(最慢的压缩速度,压缩率最高)之间的整数
  • 其默认值为6(压缩速度和压缩质量较为平衡的值)
  • 这个简单的变化更是使得 mod_deflate 可以轻松媲美 mod_gzip 的压缩
mod_deflate 模块

检查是否安装 mod_deflate 模块

[root@www ~]# apachectl -t -D DUMP_MODULES

安装时启用此功能

# 安装时编译 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

配置 mod_deflate 模块启用 

[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.confLoadModule 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@apache~# apachectl -t
Syntax OK
[root@apache~l# apachectl restart
[root@apache ~]# apachectl -t -D DUMP MODULES | grep "deflate"deflate module (shared)

 测试 mod_deflate 压缩模块是否生效 

http://192.168.10.101/test1.php

(注意:查看前面测试php的页面按F12可以打开)

网页缓存

  • 将一部分经常不会改变和变动很少的页面缓存
  • 下次浏览器再次访问这些页面时
  • 不需要再次去下载这些页面,从而提高了用户的访问速度

Apache 的 mod expires 模块会自动生成页面头部信息中

  • Expires 标签
  • Cache-Control标签

客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求

从而降低客户端的访问频率和次数

达到减少不必要的流量和增加访问速度的目的

(注:配置 mod expires 模块的步骤与 mod deflate 模块相似)

配置 mod_expires 模块启用

[root@apache~]# 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秒)

检测 httpd.conf 语法

[root@www ~]# apachectl -t

重启 Apache 服务

[root@www ~]# apachectl restart

测试mod_expires 模块,访问网站

http://192.168.10.101/test1.php

(注:查看前面测试php的页面)

隐藏版本信息

软件漏洞信息和特定版本是相关的。软件版本号对攻击者是很有价值的

修改主配置文件

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

修改httpd-default.conf文件

[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-default.confServerTokens Prod

重启并测试

# 查看响应头,Server字段只显示Apache,不再显示版本信息
[root@www ~]# apachectl restart

Apache 防盗链

没有任何资源的网站利用了其他网站的资源来展示给浏览者

好处

  • 提高了自己的访问量
  • 而大部分浏览者又不会很容易地发现

一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接

  • 一方面损害了原网站的合法利益
  • 另一方面又加重了服务器的负担

HTTP 标准协议中有专门的 Referer 字段记录,它的作用如下

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

配置防盗链

实验环境

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

修改两台服务器的主机名

服务器1

[root@www ~]# hostnamectl set-hostname apache1
[root@www ~]# bash

服务器2

[root@www ~]# hostnamectl set-hostname apache2
[root@www ~]# bash

修改每个主机的hosts文件

192.168.10.101 www.benet.com
192.168.10.102 www.accp.com

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

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

[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It work! </h1>
<img src="logo.jpg"/>
</body>
</html>

用另一台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>

客户端测试访问,按F12查看

鼠标右键点选图片,选择“查看图像信息”,可以看到图片的网址是www.kxr.com/logo.jpg 

模拟盗取图片链接 

修改index.html文件加入盗图链接

[root@apache2 htdocs]# vim index.html
<html><body><h1>lt daotu
//盗取链接图片
<img src="http://www.kxr.com/ogo.jpg" />
</h1></body></html>

鼠标右键点选图片,选择“查看图像信息”,可以看到图片的网址是www.kxr.com/logo.jpg 

 在火狐浏览器右键选择“査看元素"可以看到先对 www.dt.com 请求,然后对 www.kxr.com/logo.jp请求,说明盗链成功

为Apache1 防盗链设置

配置 mod_rewrite 模块启用

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

检测 httpd.conf 语法 

[root@apache conf ~]# apache -t

重启服务 

[root@apache1 ~]# systemctl restart httpd

(注:AllowOverride ALL)

 mod rewrite 模块主要的功能

  • 实现 URL 的跳转
  • 它的正则表达式是基于 Per语言

可基于的两种方式

  • 服务器级(httpd.conf)
  • 目录级的(.htaccess)

基于服务器级的(httpd.conf)有两种方法

  • 一种是在 httpd.conf的全局下直接利用RewriteEngine on 来打开 rewrite 功能
  • 另一种是在局部里利用 RewriteEngine on 来打开rewrite 功能

基于目录级的(.htaccess)

  • 要注意一点就是必须打开此目录的 FollowSymLinks 属性且在.htaccess 里要声明 RewriteEngine on。

开启rewrite 功能后

  • 需要设置 RewriteCond 指令

它定义了匹配规则

  • 如果符合某个或某几个条件,则执行 RewriteCond 下面紧邻的 RewriteRule 指令。
  • 如果不匹配,则后面的规则不再匹配,RewriteRule 则定义需要重定向到的路径。

RewriteEngine On打开了重写引擎

根据匹配规则分析“RewriteCond %{HTTP REFERER} !^http://www.kxr.com/.*$ [NC]”含义

  • “%{HTTP REFERER}”:表示从哪个 URL 来产生请求。
  • “!^”: 表示不是以后面的字符串开头。
  • “http:/www.kxr.com”,是本网站的路径,按整个字符串匹配。
  • “.*$ ”表示以任意字符结尾。
  • “NC"表示不区分大小写字母。

(注:最后的规则是不以“htp://www.kxr.com”为路径,即不是本网站进行访问,后面是任意字符都可以匹配成功)

如果请求路径被匹配,执行重定

“RewriteRule .*.(gifljpglswf)$ http://www.kxr.com/error.png”

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

  • “."表示匹配一个字符。
  • “*”表示匹配0到多个字符,与".”合起来的意思是匹配1到多个字符,实际上可以只用“+“表示,这里是为了演示使用方式。
  • “."在这里表示的是转义字符“”,因为"."在指令中是属于规则字符,有相应的含义如果需要匹配,需要在前面加个“”其它规则字符如果需要匹配,也做同样处理。
  • “(gifljpg|swf)”表示匹配“gif”、"jpg”、“sw"任意一个,“$”表示结束。最后的规则是以“.gif”、“jpg”、“.swf结尾,前面是1到多个字符的字符串,也就是匹配图片类型的文件。
  • “http:/kwww.kxr.com/error.png”:表示转发到这个路径

(注:整个配置的含义是本网站以外的站点访问本站的图片文件时,显示 error.png 这个图片) 

检测 httpd.conf 语法

[root@apache1 ~]# apachectl -t

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

可以看到防盗链图片已经工作,其它网站盗链,返回给它禁止盗链的图片。使用火狐浏览器可以看到 logo.jpg 的 htp 状态码是 302,它表示重定向,再次说明防盗链配置成功。 

 小阿轩yx-Apache 网页优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024最值得入手骨传导耳机指南,精选五款分享!

作为前几年在蓝牙耳机市场杀出的一匹黑马&#xff0c;黑科技加持的骨传导耳机受到广大运动爱好者的喜爱。利用骨传导技术&#xff0c;通过头骨、颌骨把声音传到听觉神经引起听觉&#xff0c;同时又不阻碍外接声音的通过&#xff0c;保证了佩戴的舒适性也带来安全使用的最佳体验…

使用GNU Gcov Lcov生成C++单元测试代码覆盖率报告

最近在统计C项目代码的单元测试覆盖率 发现通过gcov和lcov就能将代码单元测试覆盖率定量化和可视化 下面是基于gtest测试框架&#xff0c;对gcov和lcov生成覆盖率的简单示例 工作流程 主要有三个步骤 向GCC编译添加特殊的编译选项以生成可执行文件和*.gcno 运行&#xff08…

Android帧绘制流程深度解析 (一)

Android帧绘制技术有很多基础的知识&#xff0c;比如多buffer、vsync信号作用等基础知识点很多笔记讲的已经很详细了&#xff0c;我也不必再去总结&#xff0c;所以此处不再过多赘述安卓帧绘制技术&#xff0c;基础知识这篇文章总结的很好&#xff0c;一文读懂"系列&#…

JVM 垃圾回收分配及算法

一、判断对象是否可以回收 垃圾收集器在做垃圾回收的时候&#xff0c;首先需要判定的就是哪些内存是需要被回收 的&#xff0c;哪些对象是「存活」的&#xff0c;是不可以被回收的&#xff1b;哪些对象已经「死掉」了&#xff0c;需 要被回收。 一般有两种方法来判断&#xff…

网络安全攻防基础入门笔记--操作系统名词解释文件下载反弹shell防火墙绕过

渗透测试常用专业术语 POC,EXP,Payload,Shellcode POC 全程Proof of Concept,中文"概念验证",常指一段漏洞证明的代码 EXP 全程Exploit ,中文"利用",指利用系统漏洞进行攻击的动作 Payload 中文"有效载荷",指成功Exploit之后,真正在目标系…

【SpringBoot系列】覆盖重写第三方Jar包中类

要覆盖或重写一个第三方JAR包中的类&#xff0c;你可以使用以下几种方法&#xff1a; 方法一&#xff1a;使用类路径优先级 Java的类加载机制会优先加载类路径&#xff08;classpath&#xff09;中最先找到的类。因此&#xff0c;如果你在自己的项目中定义了一个与第三方JAR包…

Elasticsearch 认证模拟题 - 21

一、题目 写一个查询&#xff0c;要求查询 kibana_sample_data_ecommerce 索引&#xff0c;且 day_of_week、customer_gender、currency、type 这 4 个字段中至少两个以上。 1.1 考点 Boolean 1.2 答案 GET kibana_sample_data_ecommerce/_search {"query": {&q…

金融数据中心布线运维管理解决方案

金融行业的核心业务&#xff0c;如交易、支付、结算等&#xff0c;对网络的依赖程度极高。布线作为网络基础设施的重要组成部分&#xff0c;其稳定性和可靠性直接关系到业务的连续运行。因此&#xff0c;良好的布线管理能够确保网络系统的稳定运行&#xff0c;减少因网络故障导…

SQLserver前五讲课堂笔记

第一讲 基本内容 为什么要学习数据库系统?什么是数据库?什么是数据库系统?什么是数据库管理系统&#xff1f;本课程学什么以及学到什么程度? 重点难点 一组概念的区分&#xff1a;数据库、数据库系统和数据库管理系统熟悉表 的相关要素及术语熟悉数据库系统的构成(工作…

荣耀笔记本IP地址查看方法详解:轻松掌握网络配置技巧

在数字化时代的浪潮中&#xff0c;笔记本电脑已经成为我们生活和工作中不可或缺的重要工具。对于荣耀笔记本用户而言&#xff0c;掌握基本的网络配置技巧显得尤为重要。其中&#xff0c;查看IP地址是连接网络、配置设备、排除故障等场景下的关键步骤。本文将详细介绍荣耀笔记本…

基于单片机的无人监守点滴控制系统设计

摘要 &#xff1a; 在当代社会 &#xff0c; 点滴是一种常用的诊疗方法 。 为了减轻医护人员的压力 &#xff0c; 设计了一种基于单片机的无人监守点滴控制系统&#xff0c; 该系统共由 2 个板子组成 &#xff0c; 其中一个主控板子 &#xff0c; 一个检测板子 。 检测板与…

Flutter全面支持六大平台的开发,那鸿蒙呢?

Hi,大家好&#xff0c;今天带大家了解一下flutter3的新特性&#xff0c;flutter已经实现了对六大平台的支持&#xff0c;flutter进一步进化&#xff0c;对于鸿蒙系统目前没有明确的支持&#xff0c;不过相信不久的将来一定会支持的。 一、futter3的新特性 Flutter 3 在发布后…

部署LVS—DR群集

1、LVS-DR工作流向分析 &#xff08;1&#xff09;客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。 &#xff08;2&#xff09;Director Server 和 Real Se…

【SpringBoot】Spring Boot 中高级特性详解

文章目录 1. 异步处理1.1 什么是异步处理&#xff1f;1.2 实现异步处理1.2.1 启用异步支持1.2.2 使用 Async 注解1.2.3 调用异步方法 2. 安全管理2.1 Spring Security 集成2.2 基础安全配置2.2.1 添加依赖2.2.2 默认配置2.2.3 自定义用户认证 3. 监控和调试3.1 Spring Boot Act…

missing authentication credentials for REST request

1、报错截图 2、解决办法 将elasticsearch的elasticsearch.yml的 xpack.security.enabled: true 改为 xpack.security.enabled: false

如何在 Windows 上安装 MySQL(保姆级教程2024版)

MySQL 是最流行的数据库管理系统 (DBMS) 之一。它轻量、开源且易于安装和使用&#xff0c;因此对于那些刚开始学习和使用关系数据库的人来说是一个不错的选择。 本文主要系统介绍Windows的环境下MySQL的安装过程和验证过程。 目录 1 安装过程 1.1 前置要求 1.2 下载并安装 …

图解Transformer学习笔记

教程是来自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/ 图解Transformer Attention为RNN带来了优点&#xff0c;那么有没有一种神经网络结构直接基于Attention构造&#xff0c;而不再依赖RNN、LSTM或者CNN的结构&#xff0c;这就是Trans…

1.0 Android中Activity的基础知识

一&#xff1a;Activity的定义 Activity是一个应用组件&#xff0c;它提供了一个用户界面&#xff0c;允许用户执行一个单一的、明确的操作&#xff0c;用户看的见的操作都是在activity中执行的。Activity的实现需要在manifest中进行定义&#xff0c;不让会造成程序报错。 1.…

完美的移动端 UI 风格让客户无可挑剔

完美的移动端 UI 风格让客户无可挑剔

JUnit 5学习笔记

JUnit 5 学习笔记 1.JUnit5的改变2.JUnit5常用注解及测试2.1 DisplayName/Disabled/BeforeEach/AfterEach/BeforeAll/AfterAll2.2 Timeout2.3 RepeatedTest 3.断言3.1 简单断言3.2 数组断言3.3 组合断言3.4 异常断言3.5 超时断言3.6 快速失败 4.前置条件5.嵌套测试6.参数化测试…