为什么即使网站正常运行,我的 Lightsail 负载均衡器仍未通过运行状况检查?
我将 Amazon Lightsail 负载均衡器用于带有 Bitnami 堆栈的 Amazon Lightsail 实例。为什么即使网站正常运行,负载均衡器仍未通过运行状况检查? 如何防止负载均衡器运行状况检查失败?
简短描述
Lightsail 负载均衡器通过检查 URL http://ipaddress:80/healthcheckpath 的响应来执行运行状况检查。如果响应状态代码为 200 OK,则运行状况检查将通过。此响应检查在 Lightsail 负载均衡器中不可自定义。如果您的实例强制执行 HTTPS 重新导向,那么 http://ipaddress:80/healthcheckpath 将返回 301 或 302 响应状态代码,而不是 200 OK。这会导致运行状况检查失败。
在 WordPress 多站点实例上可能会出现同样的问题,因为这些实例原定设置情况下将 URL http://ipaddress:80/healthcheckpath 重新导向到 http://ipaddress.nip.io/healthcheckpath。
解决方法
**注意:**以下解析步骤中的文件路径可能会发生变化,具体取决于 Bitnami 堆栈是使用本机 Linux 系统软件包(方法 A)还是自包含安装(方法 B)。要识别您的 Bitnami 安装类型,请运行以下命令:
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
用于解决此问题的步骤因以下情况而异:
- 重新导向是使用 WordPress 应用程序插件设置的,例如 Really Simple SSL。
- 重新导向是使用 Web 服务器重定向规则设置的。
- 您正在使用 WordPress 多站点堆栈实例。
重新导向是使用 WordPress 应用程序插件而设置的
在网站的文档根目录中创建一个 HTML 文件。然后修改负载均衡器运行状况检查配置,将该文件添加为运行状况检查文件。您必须使用此方法,因为应用程序级重新导向通常不会影响最初不属于应用程序的 HTML 文件。
1. 连接到您的 Lightsail 实例。
2. 导航到存储网站文件的网站的“文档”(Document) 根目录位置。
在方法 A 下的 Bitnami 堆栈中,文档的根位置是 /opt/bitnami/appName/(例如,/opt/bitnami/wordpress)。
在方法 B 下的 Bitnami 堆栈中,文档的根位置是 /opt/bitnami/应用程序/ 应用程序名称 /htdocs**(例如,/opt/bitnami/apps/wordpress/htdocs**)。
在 LAMP Bitnami 堆栈中,文档的根目录位置是 /opt/bitnami/apache2/htdocs。
3. 通过上载或运行以下命令来创建一个空的 HTML 文件:
touch health.html
4. 转到 Lightsail 主页,然后选择联网。
5. 选择您的负载均衡器。
6. 在目标实例选项卡上,选择自定义运行状况检查。
7. 键入路径 health.html,然后选择保存。
8. 确保 http://ipaddress:80/health.html 使用 HTTP 标头检查器返回 200OK 响应。
9. 等待几分钟,然后验证运行状况检查是否通过。
使用 Web 服务器重定向规则设置重新导向
在 Web 服务器重新导向规则中为运行状况检查文件添加例外规则,以便只重新导向原始网站文件,而不会重新导向运行状况检查文件。
1. 按照使用 WordPress 应用程序插件设置重新导向部分中的步骤 1 到 7 进行操作。
2. 打开添加了 HTTPS 重新导向规则的 Web 服务器文件,然后在以 RewriteRule 开头的行之前添加以下行:
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html’ "
以下是重新导向规则示例:
RewriteEngine On RewriteCond %{HTTPS} off RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html’ " RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
在以下位置对规则进行上述更改:
方法 A 下的 Bitnami 堆栈:/opt/bitnami/apache2/conf/bitnami/bitnami/bitnami/bitnami.conf 以及 /opt/bitnami/apache2/conf/vhosts/ 目录中以前缀 -vhost**.conf** 结尾的任何文件。
方法 B 下的 Bitnami 堆栈:/opt/bitnami/apache2/conf/bitnami/bitnami.conf。
3. 重新启动 Web 服务。
sudo /opt/bitnami/ctlscript.sh restart
4. 确保 http://ipaddress:80/health.html 使用此 HTTP 标头检查器返回 200OK 响应。
5. 等待几分钟,然后验证运行状况检查是否通过。
您正在使用 WordPress 多站点堆栈实例
原定设置情况下,WordPress 多站点会将网址 http://ipaddress:80/healthcheckpath 重新导向到 http://ipaddress.nip.io/healthcheckpath。要解决此问题,请执行以下操作:
1. 按照使用 WordPress 应用程序插件设置重新导向部分中的步骤 1 到 7 进行操作。
2. 打开文件 /opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf 并在 # BEGIN nip.io redirection 部分下添加以下行:
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html' "
以下是添加了该行的规则示例:
# BEGIN nip.io redirection RewriteEngine On RewriteCond %{HTTP_HOST} ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(:[0-9]{1,5})?$ RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html'" RewriteRule ^/?(.*) %{REQUEST_SCHEME}://%1.nip.io%2/$1 [L,R=302,NE] # END nip.io redirection
3. 重新启动 Web 服务。
sudo /opt/bitnami/ctlscript.sh restart
4. 确保 http://ipaddress:80/health.html 使用此 HTTP 标头检查器返回 200OK 响应。
5. 等待几分钟,然后验证运行状况检查是否通过。
相关内容
- AWS 官方已更新 3 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前