Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
為什麼即使網站正常執行,我的 Lightsail 負載平衡器還是無法通過運作狀態檢查?
我將 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 檔案新增為運作狀態檢查檔案。
-
導覽至您儲存網站檔案的網站文件根目錄位置:
如果是採用方法 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 標頭檢查程式。
-
等待幾分鐘,然後確認運作狀態檢查是否通過。
相關內容
- 已提問 2 年前
- 已提問 1 年前
