AWS 目標群組報告運作狀況不佳,但應用程式運作狀況良好

AWS 目標群組報告運作狀況不佳,但應用程式運作狀況良好

我有一個在 EC2 執行個體上的 AWS 中運行的 IIS 網站,在 http://localhost:8088 上運行。它位於 ELB 後面,將所有 HTTPS 流量傳送到執行 EC2 執行個體的目標群組,因此任何對 http://my-dns-name 的請求都會被 ELB 重新路由到 https://my-dns-name ,然後轉向目標群體。我在目標群組上定義了運行狀況檢查,檢查/healthcheck端點是否有 200 OK 回應,並且端點配置為允許未經身份驗證的請求(也稱為匿名)。

應用程式本身運作良好;但是,AWS 將目標群組報告為不健康,因為它從健康檢查端點接收到回應代碼 302。如果我直接從桌面(例如透過 PowerShell)親自查詢端點,Invoke-WebRequest那麼我會得到預期的200 OK回應。如果我遠端進入 EC2 執行個體並執行相同的查詢,那麼它也會傳回預期的200 OK回應。

$> Invoke-WebRequest -Uri https://my-dns-name/healthcheck -Method GET
StatusCode        : 200
StatusDescription : OK
Content           : {}
RawContent        : HTTP/1.1 200 OK

但如果我將其更改為使用 的本地地址http://localhost:8088,則查詢失敗:

$> Invoke-WebRequest -Uri http://localhost:8088/healthcheck -Method GET
Invoke-WebRequest : Unable to connect to the remote server
At line:1 char:1
+ Invoke-WebRequest -Uri http://localhost:8088/healthcheck -Method GET

任何想法為什麼目標群組得到 302 重定向,但如果我直接查詢然後我得到 200 OK(除非我使用本地地址)?

答案1

抱歉,這是應用程式的編碼問題;有一個RequireHttps過濾器深埋在應用程式啟動程式碼中,這顯然是在嘗試在背景進行重定向; AWS 正在使用 HTTP 檢查網站,因此遇到了 302 重定向,但是當我在外部檢查時,我正在透過 HTTPS,這不會觸發重定向。

答案2

這裡需要檢查一些事項:

  1. Windows 防火牆是否正在運作並封鎖連接埠 8088?
  2. IIS 真的在監聽 8088 嗎?
  3. 您的 AWS TG 是否設定為在 8088 上執行運行狀況檢查?

相關內容