最終更新日: 2024年10月24日
前回Difyの再起動時の自動起動設定ができました。ではDifyをドメインからアクセスしてSSL化しましょう。
ここからはDifyを本格的に使うための準備をしていきます。
様々な選択肢が考えられますが、まずはALBことアプリケーションロードバランサーを使ってドメインとEC2をつなぎ、ACMこと(AWS)Certificate Managerで証明書を取得して接続をSSL化させる方法です。
アーキを簡易的に一直線にあくまでもイメージとして表すなら
EC2 → ターゲットグループ → ロードバランサー(ALB)→ Route53 → ドメイン
って感じです。
今回達成できること
自分で取得したドメインでDifyアクセスできるようになりSSL接続(https://)でアクセスできるようになる(ALBを利用)
コンテンツ
1.ドメインを取得しよう
まずドメインを取得します。SSL証明書をACM(AWS Certificate Manager)を使って取得し、ALBに設定するためにはドメインが必要なので、先にドメインを取得です。
ドメインは徹底的にAWSでフルマネージドで行くため、Route53で取得します。
ちなみにAWS上から取得して一番安いドメインは「.click」です。年間3ドルです。
ちょっと試す。社内で使うなら安くていいですね。定番の.comとか。ほかにもお好きなドメインを取得してください。
ドメインを登録に好きなドメインを入力test.clickのように。
取得OKなら取得して進んでください。おそらく画面通り進めばそんなに難しくはないです。
取得するとすぐには使えないのですが数分待っているとsucceededと書いたメールが届きます。待ちましょう。
一緒に「Verify your email address for~」という英語のメールも届きます。これを承認しないとドメイン登録拒否されちゃうのでご注意ください。私は迷惑メールにふりわけられてました。
一瞬疑うぐらい迷惑メールみたいな内容のメールです(笑)
2.ACM(Certificate Manager)で証明書をリクエストする。
Certificate Managerから「証明書をリクエスト」→「パブリック証明書をリクエスト」をしてください。
次のページで「完全修飾ドメイン名」というところに先ほどの「test.click」のように自分で取得したドメインを入力します。
ほかの設定は初期設定でOKでリクエストしてください。
そうするとこんな感じで保留中の検証という感じになると思います。
ここは時間かかります。待ちましょう。完了するとステータスが変わります。
ドメインより全然時間かかるので待ちます。(早い時早いんですが結構待ちます。)
3.ALBを立ち上げる。
さぁALBを立ち上げます。ALBは料金がかかりますのでご注意を。
EC2の画面から「ロードバランサー」を選択。そしてロードバランサーの作成。
そこからApplication Load Balancerの下の作成を押してください。
ロードバランサー名は任意の値を。
ネットワークマッピングについてはEC2が所属しているVPCとAZ(アベイラビリティゾーン)を選択してください。AZは二つ以上の選択が求められますので今回は全AZを選択しておきます。
利用しているAZについてはEC2の画面からVPCと自分のAZを選択するようにして下さい。
で「リスナーとルーティング」というところでターゲットグループというの選択を求められます。
そのため先にターゲットグループを作成したいと思いますので、ターゲットグループの作成を押してください。
いったんターゲットグループの作成
ターゲットグループの作成は簡単です。
特に変更箇所がないのであれば入力箇所は2か所です。
ターゲットグループ名を自分で好きな名前を付けるのと
ヘルスチェックパスというところを「/signin」と入力してください。以下の画像のような感じです。
次のページに行くと以下のような画面になりますので、対象の以前作ったEC2を選択して保留中としていかに含めるを押してください。そうすると下に選択されると思いますので、選択されたらターゲットグループの作成を押してください。
これでターゲットグループの作成ができました。ALB設定に戻ります。
ALB設定の続き
今しがた作ったグループを選択するのと、プロトコルをHTTPSにしてください。そうすると下に新たな選択のところが出てくると思います。セキュアリスナーの設定です。ここでACMで発行した証明書を設定します。以下の画像のような感じです。
これができたらロードバランサーの作成を押して下さい。
ALBができました!
これだけでもいいのですがここでひと手間追加しておきましょう。httpリダイレクト設定です。
http://に来たのを強制的にhttps://に流す設定です。
今作ったALBの設定画面に行きます。
リスナーとルールというところのリスナーの追加をクリックしてください。
上記の画像のようにURLのリダイレクトを選択してHTTPSにしてください。
4.さぁドメインとALBを紐づけよう。
あと少しです。ドメインとALBを紐づけます。
まずRoute53に行きます。ホストゾーン(左側サイドバー)を選択。
紐づけたいドメインの設定画面に入り、レコードを作成をクリックしてください。
ホストゾーンでAレコードを作ります。
エイリアスをオンにして先ほどのALBを選択します。
こんな感じですね。
レコードを作成してこれで完成です!あとは先ほどのドメインでアクセスしてください。
ただAレコードを設定してからちゃんと使えるようになるまではちょっと時間かかります。
紐づくまでにちょっと時間はかかるので待ちましょう。
ちなみに今回は10~20分ぐらいでした。
次回予告
無事できました!これでhttps://でアクセスできます。
ちなみに、SSL化するだけなら、Certbotを使ってLet’s Encryptの証明書を取得して使う。なんて方法がコスト的には安いです。IP固定したいだけならプラスでElastic IPとか。
あとはAmazon CloudFront(クラウドフロント)です。これは完璧に一緒ではないですがALBの位置をクラウドフロントに変えるイメージが近いです。
個人で使うにはALB高いんですよね・・・
なので次回は無料SSL編と称して、ALBを使わないSSL化を行ってみます。
追記
ほかにもセキュリティグループの設定をして会社のIPからじゃないとアクセスできないようしたりなど必要に応じて制限はかけましょう。