新产品! 基于 EPYC + NVMe 的 VPS

登入
+1 (855) 311-1555

如何使用 NGINX 和多地点 VPS 托管对网站进行负载平衡

5 分鐘閱讀 - 2025年5月15日

hero image

Table of contents

  • 如何使用 NGINX 和多地点 VPS 对网站进行负载平衡
  • 第 1 步:在不同地区部署 VPS 服务器
  • 第 2 步:设置一个 VPS 作为负载平衡器
  • 步骤 3:解决单点故障
  • 问题所在
  • 解决方案
  • 方案 1:使用浮动 IP 实现高可用性
  • 方案 2:DNS 级负载平衡
  • 方案 3:任播 IP(高级)
  • 第 4 步:健康检查和故障转移逻辑
  • 第 5 步:将域名指向负载平衡器
  • 可选:地理位置感知路由
  • \+---------------------+
  • 最后的想法

Share

使用 NGINX 在多个地点的 VPS 服务器之间分配网站流量。了解如何配置负载平衡、避免单点故障并提高性能。

如何使用 NGINX 和多地点 VPS 对网站进行负载平衡

在不同地理位置的多个 VPS 实例之间对网站进行负载平衡可提高性能、减少延迟并增强冗余。通过使用NGINX 作为反向代理,您可以在后端服务器之间分配流量,每个服务器托管一份网站或应用程序副本。

在本指南中,我们将介绍设置流程,重点介绍最佳实践,并讨论使用反向代理引入单点故障的常见隐患,以及缓解该隐患的解决方案。


第 1 步:在不同地区部署 VPS 服务器

首先在多个地理位置部署VPS 实例,例如,一个在纽约,一个在法兰克福,一个在新加坡。每个 VPS 都应运行

  • 网站或应用程序的副本
  • NGINX(如果也用作本地网络服务器)
  • 用于设置和维护的 SSH 访问权限

确保所有服务器的内容和配置一致。


第 2 步:设置一个 VPS 作为负载平衡器

选择一个 VPS 作为反向代理和负载平衡器,或为此配置一个新的 VPS。该服务器将把流量路由到后端 VPS 节点。

使用基本的 NGINX 反向代理配置,定义上游组并将传入请求代理到后端节点。

下面是一个 NGINX 代理配置示例

http { 上游 backend_servers { 服务器 vps1.example.com; 服务器 vps2.example.com; 服务器 vps3.example.com; } 服务器 { listen 80; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } }

步骤 3:解决单点故障

问题所在

托管 NGINX 反向代理的 VPS 成为单点故障。如果该服务器宕机,即使后端服务器仍在运行,整个网站也将不可用。

解决方案

方案 1:使用浮动 IP 实现高可用性

使用Keepalived或带有VRRPPacemaker等工具,在两个或多个 NGINX 节点之间创建一个浮动 IP。如果其中一个出现故障,IP 会自动切换到另一个。

方案 2:DNS 级负载平衡

运行多个 NGINX 负载平衡器节点,并使用循环 DNSGeoDNS(如 AWS Route 53、Cloudflare 负载平衡)在它们之间分配流量。

方案 3:任播 IP(高级)

使用BGP 和 Anycast,从多个地理区域宣传同一 IP 地址。流量会根据用户的位置自动路由到最近的节点。

小贴士将基于 DNS 的地理路由与高可用的 NGINX 代理服务器相结合,可提供最佳的覆盖范围和弹性。


第 4 步:健康检查和故障转移逻辑

虽然 NGINX Open Source 本身不支持主动健康检查,但它会在连接错误后停止向故障节点路由。如需更高级的健康检查,请使用 NGINX Plus:

  • 使用NGINX Plus
  • 或使用 cron + curl + 配置重载构建外部监控和故障转移逻辑

第 5 步:将域名指向负载平衡器

更新 DNS 记录,指向 NGINX 反向代理的 IP 地址(如果使用 HA,则为浮动 IP)。如果使用多个代理,请将 DNS 提供商配置为负载平衡或地理感知解析。


可选:地理位置感知路由

NGINX 本身并不处理基于地理位置的路由,但你可以将其与以下功能搭配使用:

  • GeoDNS:使用 DNS 提供商,将用户路由到最近的服务器
  • 任播 IP:从多个数据中心分发相同的 IP,实现全球路由优化

```` 用户请求 | v +---------------------+ | GeoDNS / 负载感知 | | DNS 路由层 | +---------------------+ | v +----------------------+ | 区域 NGINX 代理 | | (HA 或 Anycast IP) | +----------------------+ | v +---------------------+ | VPS 后端节点 | +---------------------+ | VPS 后端节点

+---------------------+

最后的想法

使用 NGINX 在多个 VPS 服务器之间实现负载平衡,可帮助您进行全球扩展并减少延迟。但请记住:反向代理必须具有高可用性,否则就会成为负担。

要消除单点故障,可考虑基于 DNS 的负载分配浮动 IPAnycast 网络。经过精心规划,您的多地点 VPS 设置可以提供快速、容错的大规模性能。

本指南仅适用于网络前端,不包括数据库连接以及高可用性分布的问题和解决方案。我们将在以后的文章中介绍...

博客

本周特色

更多文章
如何使用 NGINX 和多地点 VPS 托管对网站进行负载平衡

如何使用 NGINX 和多地点 VPS 托管对网站进行负载平衡

使用 NGINX 在多个地点的 VPS 服务器之间分配网站流量。了解如何配置负载平衡、避免单点故障并提高性能。

5 分鐘閱讀 - 2025年5月15日

专用服务器和 VPS 上的人工智能推理托管指南

5 分鐘閱讀 - 2025年5月13日

更多文章