為什麼即使網站正常執行,我的 Lightsail 負載平衡器還是無法通過運作狀態檢查?

2 分的閱讀內容
0

我將 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 檔案新增為運作狀態檢查檔案。

  1. 連線至 Lightsail 執行個體

  2. 導覽至您儲存網站檔案的網站文件根目錄位置:
    如果是採用方法 A 的 Bitnami 堆疊,文件根目錄位置為 /Opt/bitnami/應用程式名稱/ (例如,/opt/bitnami/wordpress)
    如果是採用方法 B 的 Bitnami 堆疊,文件根目錄位置為 /opt/bitnami/apps/應用程式名稱/htdocs (例如,/opt/bitnami/apps/wordpress/htdocs)。
    在 LAMP Bitnami 堆疊中,文件根目錄位置為 /opt/bitnami/apache2/htdocs

  3. 上傳空白的 HTML 檔案或執行下列命令,以建立空白的 HTML 檔案:

    touch health.html
  4. 開啟 Lightsail 主控台

  5. 選擇聯網

  6. 選取您的負載平衡器。

  7. 目標執行個體標籤上,選擇自訂運作狀態檢查

  8. 輸入路徑 health.html,然後選擇儲存

  9. 確認 http://ipaddress:80/health.html 傳回 200 OK 回應。使用 KeyCDN 網站上的 HTTP 標頭檢查程式

  10. 等待幾分鐘,然後確認運作狀態檢查是否通過。

使用 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.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 傳回 200 OK 回應。使用 KeyCDN 網站上的 HTTP 標頭檢查程式

  5. 等待幾分鐘,然後確認運作狀態檢查是否通過。

您正在使用 WordPress 多站點堆疊執行個體

若要解決此問題,請完成下列步驟:

  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 傳回 200 OK 回應。使用 KeyCDN 網站上的 HTTP 標頭檢查程式

  5. 等待幾分鐘,然後確認運作狀態檢查是否通過。

AWS 官方
AWS 官方已更新 7 個月前