发布于 2026-01-05 1 阅读
0

NGINX:高级负载均衡器、Web 服务器和反向代理

NGINX:高级负载均衡器、Web 服务器和反向代理

📍并发性

👉 当需要向服务器发出请求时,通常会有多个用户同时发出请求。服务器需要处理所有这些请求。这时就需要考虑一些重要因素,例如:

  • 您的服务器是否并发
  • 你的后端架构设计是否合理(单体架构、微服务架构等)?
  • 您的服务器在不同的网络负载(负载均衡)下性能(性能测试)是否良好?

负载均衡

🎯 分配负载的方法之一是使用软件负载均衡器。Nginx 正是在这种情况下发挥作用的。一般来说,Nginx 主要用作负载均衡器。尽管 Nginx 也可以用作邮件代理、反向代理、HTTP 缓存等。

🙋 但Nginx到底是什么?我们又该如何使用它呢?

Nginx

📍 Nginx

Nginx 是一款 Web 服务器,每秒可处理约 1 万个并发用户或网络负载。它一度成为速度最快的 Web 服务器,其次是 Apache。

Nginx Web 服务器
图片参考:Intellipath

📍 如何使用 NGINX 设置负载均衡

👉注意:请关注我们以获取更多信息,因为我们将在未来的博客中看到负载均衡器、代理等在我们的 NodeJS 应用程序中的实现。

🙂 使用 Nginx,我们可以使用简单(轮询)、加权和最少连接数负载均衡。

我们将遵循以下步骤:

  • 将使用简单的 Node API,并在两个 EC2 实例上运行(EC2 实例只不过是可以运行我们后端代码的虚拟服务器或机器)。
  • 然后,我们将在第三个 EC2 实例或第三台机器上运行 Nginx。
  • 然后我们将设置运行我们 Node 应用程序的两台 EC2 服务器之间的负载均衡。

😌注意:别担心,跟着做,你会受益匪浅。

哈哈

  • 创建一个 AWS 账户,不用担心,在超出免费限额之前,您可以免费使用。

  • 现在,从主页进入亚马逊 EC2 服务,创建一个 EC2 实例(启动 EC2 实例)。

AWS EC2 实例

  • 选择服务器的操作系统和名称

创建 EC2 实例

  • 选择密钥对的 .pem 文件并将其保存到本地计算机。这里可以看到,我已经创建了两个 EC2 实例来运行两个服务器(我们的 NodeJS 应用程序)。

通过 SSH 连接到 EC2 机器

🙂注意:- 这里的公网 IP 地址是我们用来从本地计算机通过 SSH 连接到 EC2 虚拟机的地址(简单来说,SSH 就是您可以通过本地计算机的终端控制 EC2 虚拟服务器)。

  • 现在,进入存放 pem 文件的目录。输入类似这样的命令, ssh -i Server1.pem ubuntu@18.212.63.176 其中 Server1.pem 是你在创建实例时保存的 pem 文件,ubuntu@public_ip 包含实例的公网 IP 地址。



chmod 0400 Server1.pem

注意:- 在运行上述命令之前,请先通过输入以下命令更改 pem 文件的权限:

chmod 400 Server1.pem

EC2实例正在运行

  • 我已在服务器 1 和服务器 2 上部署了 NodeJS 应用,如下所示

用于负载均衡的NodeJS API代码:

NodeJS 服务器

🔥 注意:如果您的服务器在 EC2 实例中处于监听状态,但您无法从本地计算机终端连接到该服务器,请按以下步骤操作:

  • 在 EC2 实例的 SSH 终端中输入 kill -9 节点
  • 将 server.js 文件中的端口号更改为 80
  • 通过此链接添加 HTTP 安全组

    • 现在,两个服务器分别运行 server_1.js 和 server_2.js,如下所示

NodeJS 服务器

  • 现在,我们将在第三个 EC2 实例上设置 Nginx Web 服务器(作为负载均衡器)。

  • 启动新的 EC2 实例并 在您的 Ubuntu EC2 系统中安装 Nginx 。

  • 现在,在这个新的 EC2 实例中,安装完 Nginx 后,进入/etc/nginx/conf.d目录,创建一个名为lb.config的文件。

  • 在文件中输入内容:

负载均衡器

  • 这里,endpoint1 是您可以指定的名称,并且该名称必须出现在 location 块中。这里的 servers 是我们输入的 EC2 实例的私有 IP 地址。

  • 这是简单的负载均衡(轮询),意味着第一个请求将路由到服务器 1,第二个请求将路由到服务器 2,依此类推……


现在,您可以通过浏览器 URL 访问 Nginx EC2 实例的公网 IP 地址,它会发出请求,例如第一个请求会路由到服务器 1,第二个请求会路由到服务器 2,依此类推……

🎯希望大家喜欢这篇关于使用 Nginx 进行负载均衡的教程。 关注我,获取更多实用教程。

🙂接下来我们将推出更多围绕核心主题的优质内容。

文章来源:https://dev.to/singhdevhub/nginx-advanced-load-balancer-web-server-reverse-proxy-4i23