[AWS]Fargate+ECSのNginxにHTTPS接続する
AWS Fargate+ECSでNginxコンテナを起動し、独自ドメインを使ってHTTPS接続するところまでを実践してみる
Nginxコンテナを起動
まずはECS上でNginxコンテナを起動するところまで進める
以下の記事に沿ってNginxを起動した前提で以後の内容は書かれている
http://パブリックIPで動作確認ができたらタスクは止める
ECSダッシュボード>クラスター>nginxx-test-cluster>タスクタブ
タスクを選択して [選択されたものを停止]
ドメインの準備
ドメインーホストゾーンーSSL証明書は3つで1セット
一度作ってしまえばずっと使える
ドメインの取得
ホストゾーンを準備
SSL証明書を取得
ECSサービスを起動
ロードバランサーを介してHTTPS接続を実現する
サービスタブに移動して [作成]
環境
デフォルトのまま
デプロイ設定
アプリケーションタイプ:サービス
ファミリー:nginx-test-task-family
リビジョン:最新
サービス名:nginx-test-service(任意)
サービスタイプ:レプリカ
必要なタスク:1
ネットワーキング
VPC:クラスターを作ったときと同じVPC
サブネット:クラスターを作ったときと同じサブネット
セキュリティグループ:nginx-test-sg(事前に作成したもの)
パブリックIP:オン
ロードバランシング
ロードバランサーの種類:Application Load Balancer
新しいロードバランサーの作成選択
ロードバランサー名:nginx-test-LB(任意)
ロードバランス用のコンテナの選択:wordpress 80:80
新しいリスナーを作成を選択
ポート/プロトコル:443/HTTPS
証明書:ACM証明書から選択
取得した証明書を選択する
新しいターゲットグループの作成を選択
ターゲットグループ名/プロトコル:nginx-test-TG / HTTP
ヘルスチェックパス/プロトコル: / / HTTP
その他は全部デフォルトのままで [作成]
サービスの初期化が完了するとタスクが勝手に起動される
ホストゾーンの編集
ホストゾーンにドメイン名とロードバランサーをつなげるルートを追加する
Route53ダッシュボード>ホストゾーン>
morningset.link(選択するドメインのもの)>レコードタブ から
[レコードを作成]
nginx-test.morningset.link
という名前でアクセスできるように設定する
レコード名:nginx-test
レコードタイプ:A
エイリアス:ON
トラフィックのルーティング先:
Application Load Balancer と Classic Load Balancerへのエイリアス
東京 ap-northeast-1
生成されたロードバランサーのエイリアスを選択
ルーティング:シンプルルーティング
ターゲットへのヘルスを評価:いいえ
[レコードを作成]
セキュリティグループを編集
EC2ダッシュボード>セキュリティーグループ>
nginx-test-sg>インバウンドルールタブから
[インバウンドルールを編集]
HTTPのレコードは既にあるはずなので、
HTTPS:443 → 0.0.0.0/0
のレコードも追加する
ロードバランサーの編集
やりたい事
https://nginx-test.morningset.link:正しくアクセスできる
http://nginx-test.morningset.link:httpsにリダイレクトさせる
IPアドレスを直接指定したアクセス:403エラーを返す
ロードバランサーのDNS名を指定したアクセス:403を返す
リスナーを追加する
ロードバランサーを追加した時点でHTTPS:443のリスナーは追加されているので、HTTP:80のリスナーを追加する
EC2ダッシュボード > ロードバランサー > nginx-test-LB > リスナータブから
[リスナーの追加]
プロトコル:HTTP
ポート:80
デフォルトアクション:リダイレクト
リダイレクトプロトコル:HTTPS
リダイレクトポート:443
[追加]
リスナールールの編集
作成したHTTPリスナーを選択する
ルール1
条件:ホストヘッダーがnginx-test.morningset.link
アクション:リダイレクト先HTTPS://nginx-test.morningset.link
ルール2
条件:それ以外の場合はルーティングされないリクエスト
アクション:固定レスポンス403を返す
HTTPSリスナーのルールも編集する
ルール1
条件:ホストヘッダーがnginx-test.morningset.link
アクション:ターゲットグループに転送
ルール2
条件:それ以外の場合はルーティングされないリクエスト
アクション:固定レスポンス403を返す
セキュアアクセスできるようになったはず