当我将弹性负载均衡(ELB)应用程序负载均衡器或 Amazon Lightsail 负载均衡器放置在我的 Amazon Lightsail WordPress 实例之前时,我会创建一个重定向循环。
简短描述
示例场景
您使用 Bitnami HTTPS 配置工具 bncert 在 Lightsail WordPress 实例上配置了重定向。该实例从 HTTP 重定向到 HTTPS,并从非 www 域重定向到 www 域。您配置了 DNS,使域名(example.com 和 www.example.com)指向 Lightsail 实例的 IP 地址,如以下示例所示:
http://example.com > Lightsail 实例 > https://example.com > Lightsail 实例 > 200 OK
您在此实例前面配置了应用程序负载均衡器,并将域指向应用程序负载均衡器。此设置会创建一个重定向循环,因为 Lightsail 实例始终通过 HTTP 端口 80 接收请求并重定向到 https://example.com。
example.com > http://xyz.ap-south-1.elb.amazonaws.com > http://your_lightsail_IP_address > https://example.com > https://xyz.ap-south-1.elb.amazonaws.com > http://your_lightsail_IP_address
解决方法
Lightsail 负载均衡器
为了避免重定向循环,请在实例上仅使用非 www 到 www 重定向。在 Lightsail 负载均衡器上执行 HTTP 到 HTTPS 重定向。
步骤 1: 重新配置 bncert
1. 要使用 bncert 工具,请运行以下命令:
sudo /opt/bitnami/bncert-tool
2. 对于输入您的主域名和备用域名,输入已指向 Lightsail 实例的域。另外,输入次域的 www 子域。
3. 对于启用 HTTP 到 HTTPS 重定向,选择 N。这将关闭 HTTP 到 HTTPS 重定向。
4. 对于启用非 www 到 www 重定向,选择 Y。
5. 对于启用 www 到非 www 重定向,选择 N。
6. 查看更改,输入 Y,然后按 Enter。
有关详细信息,请参阅 Amazon Lightsail 文档中的 Step 5: Turn on HTTPS on your WordPress instance。
步骤 2.使用从 HTTP 到 HTTPS 的重定向创建 Lightsail 负载均衡器
1. 创建 Lightsail 负载均衡器,然后向其附加实例。
2. 为 example.com 和 www.example.com 创建 SSL/TLS 证书。将域名和子域名替换为您的域名和子域的名称。
3. 要打开 TLS 侦听器,请将 SSL/TLS 证书附加到 Lightsail 负载均衡器。
4. 在 Lightsail 负载均衡器的协议部分,切换方向选项以启用 HTTP 到 HTTPS 重定向。
现在,Lightsail 负载均衡器的 DNS 名称会重定向到负载均衡器的 www 子域。
步骤 3: 更新 DNS
在 DNS 配置中,将 example.com 和 www.example.com 指向 Lightsail 负载均衡器的 DNS 名称。
应用程序负载均衡器
对于 Lightsail 实例前面的应用程序负载均衡器,请仅在 Lightsail 实例上保留 HTTP 到 HTTPS 重定向。
1. 打开 Amazon Elastic Compute Cloud(Amazon EC2)控制台。
2. 在负载均衡下,选择目标组。
3, 选择创建目标组。
4. 为端口 80 和 443 创建名为 tg-80 和 tg-443 的目标组。
5. 对于目标类型,选择 IP。
6. 对于注册目标、网络,选择其他私有 IP,然后指定 Lightsail 实例的 IP 地址。
7. 创建应用程序负载均衡器。在端口 80 上创建指向目标组 tg-80 的路由侦听器,在端口 443 上创建指向目标组 tg-443 的侦听器。
8. 更新 example.com 和 www.example.com 的 DNS 记录,使其指向应用程序负载均衡器的 DNS 名称。
利用此配置,应用程序负载均衡器会通过 HTTPS 将 HTTPS 请求转发给 Amazon Lightsail。因此,您会收到 200 OK 响应。