我將 Amazon Lightsail 負載平衡器用於具有 Bitnami 堆疊的 Lightsail 執行個體。即使網站正常執行,負載平衡器運作狀態檢查仍然失敗。
簡短描述
Lightsail 負載平衡器會透過檢查 http://ipaddress:80/healthcheckpath 網址回應,執行運作狀態檢查。如果狀態代碼為 200 OK,則表示運作狀態檢查通過。此回應檢查在 Lightsail 負載平衡器中無法自訂。如果您的執行個體強制執行 HTTPS 重新引導,則 **http://ipaddress:80/healthcheckpath ** 會傳回 301 或 302 回應狀態代碼,而不是 200 OK。這會導致運作狀態檢查失敗。
WordPress 多站點執行個體可能會發生相同的問題,因為這些執行個體預設會將 **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 檔案新增為運作狀態狀態檢查檔案。由於應用程式層級重新引導只會影響屬於原始應用程式的 HTML 檔案,因此您必須將 HMTL 檔案新增為運作狀態檢查檔案。
-
連線至 Lightsail 執行個體。
-
導覽至您儲存網站檔案的網站文件根目錄位置:
如果是採用方法 A 的 Bitnami 堆疊,文件根目錄位置為 /Opt/bitnami/應用程式名稱/ (例如,/opt/bitnami/wordpress)。
如果是採用方法 B 的 Bitnami 堆疊,文件根目錄位置為 /opt/bitnami/apps/應用程式名稱/htdocs (例如,/opt/bitnami/apps/wordpress/htdocs)。
在 LAMP Bitnami 堆疊中,文件根目錄位置為 /opt/bitnami/apache2/htdocs。
-
上傳空白的 HTML 檔案或執行下列命令,以建立空白的 HTML 檔案:
touch health.html
-
開啟 Lightsail 主控台。
-
選擇聯網。
-
選取您的負載平衡器。
-
在目標執行個體標籤上,選擇自訂運作狀態檢查。
-
輸入路徑 health.html,然後選擇儲存。
-
確認 http://ipaddress:80/health.html 傳回 200 OK 回應。使用 KeyCDN 網站上的 HTTP 標頭檢查程式。
-
等待幾分鐘,然後確認運作狀態檢查是否通過。
使用 Web 伺服器重新引導規則來設定重新引導
在 Web 伺服器重新引導規則中新增例外規則,這麼一來,只會重新引導原始網站檔案,而不會重新引導運作狀態檢查檔案。
-
完成使用 WordPress 應用程式外掛程式設定重新引導一節中的步驟 1-7。
-
開啟您要新增 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.conf 以及 /opt/bitnami/apache2/conf/vhosts/ 目錄中以 -vhost.conf 結尾的任何檔案。
如果是採用方法 B 的 Bitnami 堆疊:/opt/bitnami/apache2/conf/bitnami/bitnami.conf。
-
重新啟動 Web 服務:
sudo /opt/bitnami/ctlscript.sh restart
-
確認 http://ipaddress:80/health.html 傳回 200 OK 回應。使用 KeyCDN 網站上的 HTTP 標頭檢查程式。
-
等待幾分鐘,然後確認運作狀態檢查是否通過。
您正在使用 WordPress 多站點堆疊執行個體
若要解決此問題,請完成下列步驟:
-
完成使用 WordPress 應用程式外掛程式設定重新引導一節中的步驟 1-7。
-
開啟 /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
-
重新啟動 Web 服務:
sudo /opt/bitnami/ctlscript.sh restart
-
確認 http://ipaddress:80/health.html 傳回 200 OK 回應。使用 KeyCDN 網站上的 HTTP 標頭檢查程式。
-
等待幾分鐘,然後確認運作狀態檢查是否通過。