我们有两台来自 Hetzner 的云服务器。Web 服务器是 Nginx。两台服务器完全相同(硬件、软件和我们的 Web 应用程序)。
两台服务器上都安装了 LetsEncrypt 证书。Nginx 配置为重定向http
到https
。
DNS 服务器是 Cloudflare。我们手动将域的 A 记录的 IP 地址从服务器 A 切换到服务器 B,反之亦然。
现在我们已经在 Hetzer 中使用两台服务器和一项服务创建了一个负载均衡器:https 443 -> 443
。
一旦我们将域的 A 记录的 IP 地址更改为 LB 的 IP 地址,我们就会收到503 service unavailable
。
请协助。
答案1
如果您想使用负载均衡器进行 SSL 终止,您的 nginx 不应该侦听 tcp 端口 443 也不应该有证书。nginx 应该只侦听端口 80,并且负载均衡器应该:
- 持有证书(hetzner LB 显然可以管理 LetEncrypt 证书)
- 监听端口 443(源),并重定向到 nginx 端口 80(目标),中间使用 SSL 代理。
要管理 http 到 https 的重定向,如果负载均衡器能够做到,这是最好的选择。如果不能,那么在 nginx 端,您必须检测客户端是通过 https 还是 http 连接的(有时负载均衡器可以设置一个包含此信息的标头),如果是明文 http,则重定向。