小阿轩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.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>

检查安装情况

[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.conf

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

检测 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 网页优化

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

音视频集式流媒体边缘分布式集群拉流管理

一直以来&#xff0c;由于srs zlm等开源软件采用传统直播协议&#xff0c;即使后面实现了webrtc转发&#xff0c;由于信令交互较弱&#xff0c;使得传统的安防监控方案需要在公网云平台上部署大型流媒体服务器&#xff0c;而且节点资源不能统一管理调度&#xff0c;缺乏灵活性和…

MOS开关电路应用于降低静态功耗

本文主要讲述MOS开关电路的应用,过了好久突然想整理一下&#xff0c;有错误的地方请多多指出&#xff0c;在做电池类产品&#xff0c;需要控制产品的静态功耗&#xff0c;即使让芯片进入休眠状态&#xff0c;依旧功率很大&#xff0c;所以在电路中加一组软开关&#xff0c;防止…

连锁门店收银系统源码!

1.系统概况 智慧新零售系统是一套针对零售行业的saas收银系统&#xff0c;线下线上一体化的收银系统。核心功能涵盖了线下收银、小程序商城、会员管理、50营销插件、ERP进销存管理、跑腿配送等行业解决方案。 2.适用行业及门店 智慧新零售是针对零售行业的saas收银系统&#…

【Pandas】已完美解决:AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例&#xff08;结合实战场景&#xff09;五、注意事项 一、问题背景 在Pandas的早期版本中&#xff0c;ix 是一个方便的索引器&#xff0c;允许用户通过标签和整数位置来索引DataFrame的行和列。然而&a…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 特惠寿司(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 特惠寿司(100分) 🌍 评测功能需要订阅专栏后私信联系清隆解…

苹果:创新引领下的科技传奇

自1976年创立以来&#xff0c;苹果公司&#xff08;Apple Inc.&#xff09;以其卓越的创新能力和独特的市场策略&#xff0c;从一家初创企业崛起为全球科技产业的领军者。本文将深入探讨苹果的发展历程&#xff0c;剖析其成功的关键因素&#xff0c;并展望其未来的发展前景。 初…

03-appium环境配置和启动参数设置

参考文章&#xff1a;https://blog.csdn.net/lovedingd/article/details/110949993 一、appium介绍 Appium是一个开源、跨平台的自动化测试框架&#xff0c;支持Android、IOS等平台&#xff0c;同时也支持多语言&#xff0c;比如&#xff1a;Java、Python等。 Appiumu通过扩展…

【强化学习】gymnasium自定义环境并封装学习笔记

【强化学习】gymnasium自定义环境并封装学习笔记 gym与gymnasium简介gymgymnasium gymnasium的基本使用方法使用gymnasium封装自定义环境官方示例及代码编写环境文件__init__()方法reset()方法step()方法render()方法close()方法 注册环境创建包 Package&#xff08;最后一步&a…

利用智能交流控制设计方法实现更好的家电安全

从机电到数字控制的转变首先是通过现成的电子设备完成的——系统架构是围绕 MCU、分立晶体管和高压双向可控硅构建的。 家用电器的这场小型革命部分是由于减少能源和水的浪费以及提高易用性的需求日益增长而推动的。 随着市场及其标准的化&#xff0c;性能和成本效率一直是家…

【docker hub镜像源失效】2024年6月6日 docker 国内镜像源失效

文章目录 概述中科大镜像源阿里镜像源其他镜像源可用的镜像源写在最后 之前违反社区规定了&#xff0c;做了和谐 概述 大家都知道使用docker hub官方镜像需要魔法&#xff0c;虽然大部人有魔法&#xff0c;但是网速也是很慢&#xff0c;还有部分同学没有&#xff0c;全靠国内各…

每日5题Day25 - LeetCode 121 - 125

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {if(prices.length 1){return 0;}//dp…

深入理解计算机系统 CSAPP 家庭作业6.37

S256 N64时: sumA:这个很简单了,不说了 sumB:如下表. i递增时一直不命中 读到j1,i0 即读a[0][1]时 组0存放的是a[48][0] -a[48][3] 接着读a[1][1]时,组16放的是a[49][0]-a[49][3],j递增之后还是一直不命中 组0:a[0][0]a[16][0]a[32][0]a[48][0]a[0][1]组16:a[1][0]a[17][…

Unity2D计算两个物体的距离

1.首先新建一个场景并添加2个物体 2.创建一个脚本并编写代码 using UnityEngine;public class text2: MonoBehaviour {public GameObject gameObject1; // 第一个物体public GameObject gameObject2; // 第二个物体void Update(){// 计算两个物体之间的距离float distance Vec…

深度解析文件或目录损坏无法读取的应对之道

在数字化时代&#xff0c;数据已成为我们生活和工作中不可或缺的一部分。然而&#xff0c;当遭遇文件或目录损坏且无法读取的困境时&#xff0c;我们可能会面临巨大的挑战。本文将深入探讨这一现象&#xff0c;分析其背后的原因&#xff0c;并提供有效的数据恢复方案&#xff0…

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

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

获取在 Windows 10/11 上编辑 PDF 的 6 大方法(免费)

作为全球最受欢迎的操作系统&#xff0c;Microsoft Windows的每一次升级都引起了公众的关注。其中&#xff0c;Windows 10 和 Windows 11 是最常用的版本。 一些需要在 Windows 11/10 上处理繁琐的 PDF 任务的人可能会问&#xff1a;Microsoft Windows 有 PDF 编辑器吗&#x…

phpStudy里面的MySQL启动不了

C:\Users\Administrator>netstat -an | find "3306" TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING TCP [::]:3306 [::]:0 LISTENING TCP [::]:33060 [::]:0 LISTENING 从你提供的输出结果可以看到&#xff0c;端口3306和33060已经…

汽车EDI:波森Boysen EDI项目案例

企业A作为Boysen 的供应商&#xff0c;为了响应Boysen的号召&#xff0c;需要与其实现EDI对接。由于企业A此前并没有EDI项目的实施经验&#xff0c;对EDI项目的实施流程、技术要求等内容不知道应该从何下手。 为了实现EDI对接意味着企业A需要具备自己的EDI系统&#xff0c;从而…

贪心+思维,CF1615C - Menorah

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1615C - Menorah 二、解题报告 1、思路分析 两次连续操作相当于交换两位奇数次操作, 改变了01频数01频数是否能一样 -> -1 否则就是调整到该在的位置的最小操作次数 不一样的位置一定是偶数个,否则01频数…

利器放送丨如何在PS里使用stable diffusion插件?

各位设计界的领军人物们&#xff0c;你们一定对PS&#xff08;也就是大家熟知的Photoshop&#xff09;不陌生吧。同样&#xff0c;对于AI领域的精英们&#xff0c;SD&#xff08;stablediffusion&#xff09;这款软件也应该是如雷贯耳。这两款软件&#xff0c;各自独立且功能强…