0

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ます。

4

0 に答える 0