AWS ターゲット グループは異常を報告しますが、アプリケーションは正常です

AWS ターゲット グループは異常を報告しますが、アプリケーションは正常です

私は、http://localhost:8088 で実行されている EC2 インスタンス上の AWS で実行されている IIS Web サイトを持っています。これは、EC2 インスタンスが実行されているターゲット グループにすべての HTTPS トラフィックを送信する ELB の背後にあるため、http://my-dns-name へのリクエストは ELB によって https://my-dns-name に再ルーティングされ、その後ターゲット グループに送信されます。ターゲット グループには、エンド/healthcheckポイントで 200 OK 応答をチェックするヘルス チェックが定義されており、エンドポイントは認証されていないリクエスト (匿名) を許可するように構成されています。

アプリケーション自体は正常に動作していますが、ヘルスチェックエンドポイントから応答コード 302 を受信して​​いるため、AWS はターゲットグループが正常でないと報告しています。デスクトップから直接 (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 を使用して Web サイトをチェックしていたため、302 リダイレクトが発生していましたが、外部でチェックしていたときは HTTPS 経由でアクセスしていたため、リダイレクトはトリガーされませんでした。

答え2

ここで確認すべき点がいくつかあります:

  1. Windows ファイアウォールが実行中で、ポート 8088 がブロックされていますか?
  2. IIS は実際に 8088 でリッスンしていますか?
  3. AWS TG は 8088 でヘルスチェックを実行するように設定されていますか? https で 200 OK 応答が返されたことから、ポート 443 で実行されているようです。

関連情報