任务一把一切拼凑起来

从之前的模块中,你会学到当你在浏览器中请求网页时,幕后会发生很多事情。

总结来说,当你请求一个网站时,你的电脑需要知道它要通信的服务器的IP地址;为此,它使用了DNS。你的电脑随后用一套叫做HTTP协议的特殊命令与网页服务器通信;网页服务器随后返回HTML、JavaScript、CSS、图片等,浏览器会用这些文件正确格式化并显示网站。

还有一些其他组件帮助网络更高效运行并提供更多功能。

任务二其他组成部分

负载均衡器

当网站流量开始变得相当庞大,或者运行需要高可用性的应用程序时,一个网页服务器可能已经无法完成这项工作。负载均衡器提供两个主要功能:确保高流量网站能够承受负载,以及在服务器失去响应时提供故障切换。

当你请求带有负载均衡器的网站时,负载均衡器会先接收你的请求,然后转发到其背后的多个服务器之一。负载均衡器使用不同的算法来帮助它决定哪个服务器最适合处理请求。这些算法的几个例子包括轮询,轮发送请求到每个服务器;加算法,检查服务器当前处理的请求数量,并将其发送到最不繁忙的服务器。

负载均衡器还会定期对每台服务器进行检查,以确保其运行正常;这叫做健康检查。如果服务器没有适当响应或没有响应,负载均衡器会停止发送流量,直到再次正确响应。

CDN(内容分发网络)

CDN是减少繁忙网站流量的极佳资源。它允许你托管网站的静态文件,如JavaScript、CSS、图片、视频,并在全球数千台服务器上托管。当用户请求托管文件时,CDN会计算最近的服务器物理位置,并将请求发送到那里,而不是可能发送到世界另一端。

数据库

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

WAF(网络应用防火墙

WAF位于你的网页请求和网页服务器之间;其主要目的是保护网页服务器免受黑客攻击或拒绝服务攻击。它分析网络请求中的常见攻击手法,判断请求是否来自真实浏览器而非机器人。它还通过使用所谓的速率限制机制来检测是否有过多的网络请求,该限制只允许每秒从某个IP发送一定数量的请求。如果请求被判定为潜在攻击,将被丢弃且永远不会发送到网络服务器。

任务三网络服务器的工作原理

网络服务器的工作原理。

什么是网页服务器?

网络服务器是一种软件,用于监听输入连接,然后利用HTTP协议将网页内容传递给客户端。你会遇到最常见的网页服务器软件是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服务器可以托管多个不同域名的网站;为此,他们使用虚拟主机。网页服务器软件会检查从HTTP头部请求的主机名,并将其与其虚拟主机进行匹配(虚拟主机其实就是基于文本的配置文件)。如果找到匹配,将提供正确的网站。如果找不到匹配,将提供默认网站。

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

你可以在网络服务器上托管各种不同的网站数量。

静态内容 vs 动态内容

静态内容,顾名思义,是指永不改变的内容。常见的例子有图片、JavaScript、CSS等,但也可以包含永不改变的HTML。此外,这些文件是直接从网页服务器提供,未做任何更改。

而动态内容则是可能会根据不同请求而变化的内容。举个例子,博客。在博客首页,它会显示最新的条目。如果新条目被创建,主页会更新为最新条目,或者第二个例子可能是博客上的搜索页面。根据你搜索的词汇,会出现不同的结果。

这些改变你最终看到的内容,是在所谓的后端通过编程和脚本语言完成的。它被称为后端,因为正在做的事情都是在幕后完成的。你无法查看网站的HTML源代码,也无法看到后端发生了什么,而HTML是后端处理的结果。你在浏览器中看到的所有内容都叫做前端。

脚本与后端语言

后端语言能实现的功能几乎没有限制,这些正是网站对用户互动的关键。这些语言的一些例子(顺序无:p)包括  PHP、Python、Ruby、NodeJS、Perl 等。这些语言可以与数据库交互,调用外部服务,处理用户数据,还有更多功能。一个非常基础的 PHP例子是,如果你请求访问网站  http://example.com/index。php?name=adam
 

如果索引。PHP 的构建方式如下:

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

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

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

你会注意到客户端看不到任何PHP代码,因为它在后端。这种交互性为尚未安全创建的网络应用带来了更多安全问题,正如后续模块中所学。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐