AWS で 5 つの React + Node.js アプリ (ポートフォリオ自体を含む) で構成されるポートフォリオ全体をホストしようとしています。プロジェクトごとに、S3 でフロントエンドをホストし、CloudFront ディストリビューションでフロントエンドを配置しています。mydomain.com
私は、ACM SSL 証明書を介して HTTPS を持つ、これから呼び出す Route53 カスタム ドメインから提供されるポートフォリオをセットアップしました。他のアプリは、バケットから Web サイト エンドポイントを使用できます。すべてのアプリのフロントエンドが を呼び出して EC2 インスタンスとやり取りするようにしたいのですが、https://api.mydomain.com:${APP_PORT}/${ROUTE}
はAPP_PORT
目的の API が実行されているポートです。インスタンスに Node.js をインストールし、2 つのリポジトリを複製し、PM2 でアプリを起動しました。各アプリは get リクエストをリッスンし、/
戻ります${APP_NAME} API working properly
. 1 つはポート 5000 で実行され、もう 1 つは 5001 で実行されます。インスタンスにアタッチされたセキュリティ グループには、次のインバウンド ルールがあります。
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
HTTP | TCP | 80 | 0.0.0.0/0 |
HTTP | TCP | 80 | ::/0 |
SSH | TCP | 22 | 0.0.0.0/0 |
SSH | TCP | 22 | ::/0 |
カスタム TCP | TCP | 5000 | 0.0.0.0/0 |
カスタム TCP | TCP | 5000 | ::/0 |
HTTPS | TCP | 443 | 0.0.0.0/0 |
HTTPS | TCP | 443 | ::/0 |
カスタム TCP | TCP | 5001 | 0.0.0.0/0 |
カスタム TCP | TCP | 5001 | ::/0 |
現在、インスタンスとポートのパブリック IPv4 DNS を介して各 API を呼び出すことができるのでhttp://ec2-012-34-56-789.compute-1.amazonaws.com:5000/
、http://ec2-012-34-56-789.compute-1.amazonaws.com:5001/
機能します。https://api.mydomain.com...
代わりに動作させたいです。これまで見てきたことから、アプリケーション ロード バランサーを使用してから、Route53 ホスト ゾーンに A レコードを作成する必要があります。
ここが私が立ち往生している場所です。
内部向けスキーム、IPv4 IP アドレス タイプ、および次のリスナーを使用して、アプリケーション ロード バランサーを作成します。
ロードバランサ プロトコル | ロード バランサ ポート |
---|---|
HTTP | 80 |
HTTPS | 443 |
HTTPS | 5000 |
HTTPS | 5001 |
デフォルトの VPC をそのままにして、すべてのアベイラビリティ ゾーンを確認します。セキュリティ設定でmydomain.com
、 、www.mydomain.com
、およびをカバーする ACM 証明書を選択します*.mydomain.com
。デフォルトのセキュリティ ポリシー ( ELBSecurityPolicy-2016-08
)。次に、セキュリティ グループは、インスタンスに使用しているものと同じです。ここで私は間違いを犯していると思います: タイプ インスタンス、プロトコル HTTP、バージョン HTTP1、およびポート 80 の新しいターゲット グループを作成します。ヘルス チェックは、HTTP を介して で実行されます/
。インスタンスを登録し、[作成] をクリックします。
api.mydomain.com
アプリケーション ロード バランサーを指すエイリアスとして Route53の A レコードを作成します。ターゲット グループはヘルス チェックを終了し、異常を示しています。ロード バランサーの DNS 名またはその両方への HTTP get 要求のapi.mydomain.com
後にいずれかのポート show が続きます400 The plain HTTP request was sent to HTTPS port
。HTTPS 要求はそれぞれError: Hostname/IP does not match certificate's altnames...
とを示し502 Bad Gateway
ます。