THM学习笔记—补充

当你请求一个网站时,你的计算机需要知道与之通信的服务器的IP地址;为此,它使用DNS。然后,你的计算机使用一组称为HTTP协议的特殊命令与Web服务器通信;然后,Web服务器返回HTML、JavaScript、CSS、图像等,你的浏览器使用这些内容正确格式化并显示给你。

还有一些其他组件,它们帮助Web更有效地运行并提供额外的功能。

负载均衡器

当一个网站的流量变得非常大或运行一个需要高可用性的应用程序时,一个Web服务器可能无法胜任。负载均衡器提供两个主要功能,确保高流量的网站可以处理负载并在服务器失去响应时提供故障转移。

当你通过负载均衡器请求一个网站时,负载均衡器首先接收你的请求,然后将其转发到其后面的多个服务器之一。负载均衡器使用不同的算法来决定哪个服务器最适合处理请求。这些算法的几个示例是 轮询,按顺序将请求发送到每个服务器,或 加权,检查服务器当前处理的请求量,并将请求发送到最繁忙的服务器。

负载均衡器还定期检查每个服务器,以确保它们正常运行;这称为健康检查。如果服务器没有适当响应或未响应,负载均衡器将停止发送流量,直到服务器再次适当响应。

CDN(内容分发网络)

对于繁忙的网站来说,CDN可以是一个很好的资源。它允许从你的网站托管静态文件,如JavaScript、CSS、图像、视频,并在世界各地的数千台服务器上托管它们。当用户请求其中托管的文件时,CDN会确定最近的服务器物理位置,并将请求发送到那里,而不是潜在地发送到世界的另一端。

数据库

通常,网站需要一种存储用户信息的方式。Web服务器可以与数据库通信,以从中存储和检索数据。数据库可以范围从简单的纯文本文件到多个服务器提供速度和弹性的复杂集群。你会遇到一些常见的数据库:MySQL、MSSQL、MongoDB、GraphQL、Postgres等;每个都有其特定的特性。

WAF(Web应用程序防火墙)

WAF位于您的Web请求和Web服务器之间;其主要目的是保护Web服务器免受黑客或拒绝服务攻击。它分析Web请求以检测常见的攻击技术,确定请求是否来自真实浏览器而不是机器人。它还通过使用称为速率限制的方法检查是否正在发送过多的Web请求,这将仅允许每秒从一个IP发送一定数量的请求。如果请求被视为潜在攻击,它将被丢弃并永远不会发送到Web服务器。

什么是Web服务器?

Web服务器是一种监听传入连接的软件,然后利用HTTP协议将Web内容传递给其客户端。你会遇到的最常见的Web服务器软件有Apache、Nginx、IIS和NodeJS。Web服务器从称为其根目录的位置提供文件,该位置在软件设置中定义。例如,Nginx和Apache在Linux操作系统中共享默认位置/var/www/html,而IIS在Windows操作系统中使用C:\inetpub\wwwroot。因此,例如,如果你请求文件http://www.example.com/picture.jpg,它将从其本地硬盘发送文件/var/www/html/picture.jpg

虚拟主机

Web服务器可以托管具有不同域名的多个网站;为实现这一点,它们使用虚拟主机。Web服务器软件检查HTTP头中请求的主机名,并将其与其虚拟主机(虚拟主机只是基于文本的配置文件)进行匹配。如果找到匹配项,将提供正确的网站。如果找不到匹配项,将提供默认网站。

虚拟主机可以将其根目录映射到硬盘上的不同位置。例如,one.com 映射到/var/www/website_one,two.com 映射到/var/www/website_two。

您可以在Web服务器上托管的不同网站数量没有限制。

静态 vs 动态内容

静态内容,顾名思义,是永远不会改变的内容。这些内容的常见示例包括图片、JavaScript、CSS等,但也可以包括永远不会改变的HTML。此外,这些文件直接从Web服务器提供,没有对它们进行任何更改。

另一方面,动态内容是可能随不同请求而更改的内容。例如,博客就是一个例子。在博客的首页上,它会显示最新的条目。如果创建了新条目,则主页将使用最新条目进行更新,或者第二个例子可能是博客上的搜索页面。根据搜索的单词,将显示不同的结果。

您最终看到的内容的这些更改是通过使用编程和脚本语言在称为后端的地方完成的。它被称为后端,因为正在进行的所有操作都是在幕后完成的。您无法查看网站的HTML源代码并查看后端发生了什么,而HTML是来自后端处理的结果。您在浏览器中看到的一切称为前端

脚本和后端语言

后端语言可以实现的功能几乎没有限制,这是使网站对用户具有交互性的因素。这些语言的一些示例(无特定顺序:p)是PHP、Python、Ruby、NodeJS、Perl等。这些语言可以与数据库交互、调用外部服务、处理用户的数据等等。一个非常基本的PHP示例是,如果您请求网站http://example.com/index.php?name=adam

如果index.php是这样构建的:

<html>
<body>
Hello <?php echo $_GET["name"]; ?>
</body>
</html>

它将向客户端输出以下内容:

<html><body>Hello adam</body></html>

您会注意到客户端看不到任何PHP代码,因为它在后端。这种交互性为未经安全创建的Web应用程序开启了更多的安全问题。

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值