Nginx

Nginx 是一个 Web 服务器,用作反向代理、负载均衡器、邮件代理和 HTTP 缓存,并遵循主从架构

为了简单起见,请记住:Nginx 是一个了不起的 Web 服务器。

Web 服务器,简单来说,就像一个中间人。例如,假设您要访问 www.elephdev.com,因此您输入地址https://www.elephdev.com,您的浏览器会找出网络服务器的地址,https://www.elephdev.com然后将其定向到后端服务器,后端服务器会将响应返回给客户端

代理与反向代理

Nginx 的底层功能是代理。所以现在需要了解什么是代理和反向代理

代理

好的,所以我们有客户端(>= 1)、一个中间 Web 服务器(在这种情况下,我们称之为代理)和一个服务器。在这种情况下发生的主要事情是服务器不知道哪个客户端正在请求

image.png

在这里,让client1&client2通过代理服务器向服务器发送请求request1&request2。现在后端服务器不会知道 request1 是由 client1 还是 client2 发送的,而是执行操作

反向代理

简单来说,反向代理与代理的作用相反。在这里,我们假设有一个客户端、一个中间 Web 服务器和几个后端服务器 (>=1)

image.png

在这种情况下,客户端将通过网络服务器发送请求。现在网络服务器将通过一种算法定向到许多服务器中的任何一个,一个是循环(最可爱的!),并通过网络服务器将响应发送回客户端。所以在这里,客户端不知道它正在与哪个后端服务器交互

负载均衡

它是反向代理本身的一个实例应用程序

让我们来看看基本的区别。在负载平衡中,您必须有 2 个或更多后端服务器,但在反向代理设置中,这不是必需的。它甚至可以与 1 个后端服务器一起使用。

让我们从幕后看一下,如果我们有很多来自客户端的请求,这个负载均衡器会检查每个后端服务器的状态并分配请求的负载,并更快地向客户端发送响应

有状态与无状态应用程序

有状态的应用程序

此应用程序存储一个附加变量,用于保存仅适用于服务器的单个实例的信息

image.png

如果后端服务器server1存储了一些信息,则不会为服务器server2存储一些信息,因此客户端(此处为 Bob)交互可能/可能无法获得所需的结果,因为它可能与 server1 或 server2 交互。在这种情况下,server1 将允许 Bob 查看配置文件,而 server2 不允许。因此,即使它阻止了对数据库的许多 API 调用并且速度更快,它也可能导致跨不同服务器的这个问题

无状态应用程序

现在,无状态是对数据库的更多 API 调用,但在客户端与不同后端服务器的交互方面存在的问题更少

image.png

我知道你没有明白我的意思。如果我从客户端发送请求到后端服务器server1通过 Web 服务器,它将向客户端提供一个令牌以用于访问任何进一步的请求,这很简单。客户端可以使用令牌并向网络服务器发送请求。该 Web 服务器将请求与令牌一起发送到任何后端服务器,每个后端服务器都将提供相同的所需输出

什么是 Nginx?

Nginx 是 Web 服务器,直到现在我一直在整个博客中使用术语 Web 服务器。老实说,这就像一个中间人

image.png

该图并不令人困惑,它只是我迄今为止解释过的所有概念的组合。在这里,我们有 3 个后端服务器在 3001、3002、3003 端口运行,所有这些后端服务器都使用在端口 5432 上运行的相同数据库。

现在,当客户端发送请求GET /employees时https://localhost(默认在端口 443),它会根据算法将此请求传递给任何后端服务器,并从数据库中获取信息并将 JSON 发送回 Nginx Web 服务器并发送回到客户端。

如果我们要使用诸如round-robin 之类的算法,它会做的是假设客户端 2 已向其发送请求,https://localhost然后 Nginx 服务器将首先将请求传递到端口 3000 并将响应发送回客户端。对于另一个请求,Nginx 会将请求传递给 3002,依此类推。

信息量太大了吧!但是到此为止,您已经清楚地了解了 Nginx 是什么以及与 Nginx 一起使用的术语。现在我们将继续了解安装和配置技术

点赞(0)

评论列表 共有 0 评论

暂无评论

微信服务号

微信客服

淘宝店铺

support@elephdev.com

发表
评论
Go
顶部