ターゲットグループのヘルスチェックで '#' を含むパスを指定した際に失敗する原因と対処方法

ターゲットグループのヘルスチェックで '#' を含むパスを指定した際に失敗する原因と対処方法

Clock Icon2024.11.07

困っていること

Application Load Balancer (ALB) のターゲットグループにおいて、ヘルスチェックパス /#/login/ の設定でヘルスチェックが失敗してしまいます。

解決方法を教えてください。

cm-hirai-screenshot 2024-11-06 16.12.45のコピー

前提条件

  • Webサーバ:Apache HTTP Server
  • ファイル構成:/#/login/配下にindex.htmlが存在
  • ターゲットのセキュリティグループ:ALBからのトラフィックを許可

原因

本事象の原因は、'#'文字がWebサーバーで正しく解釈されないことにあります。

ヘルスチェックのリクエストパスに含まれる '#' が Webサーバー側で解釈できず、Bad Request エラーが発生していると考えられます。

解決方法

解決するには、ヘルスチェックパスの '#' をエンコードされた文字列 '%23' に変更します。

具体的には、ターゲットグループのヘルスチェックパスの/#/login//%23/login/ に変更します。

cm-hirai-screenshot 2024-11-06 16.12.45
変更前

以下の手順を実施します。

  1. ターゲットグループの[ヘルスチェック]のうち、[編集]を選択します
  2. ヘルスチェックパスの '#' を '%23' に変更します
    • 変更前:/#/login/
    • 変更後:/%23/login/
  3. 設定を保存します

cm-hirai-screenshot 2024-11-06 16.11.29
変更後

これによって、'#'を含むヘルスチェックパスの問題が解決し、ヘルスチェックが成功します。

補足情報

  • URLエンコードについて
    • URLで特殊な意味を持つ文字(#, ?, &など)は、%に続く2桁の16進数でエンコードする必要があります。例えば、'#'は'%23'としてエンコードされます。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.