AWSにサーバを立てる(HTTPS、独自ドメイン、Apache)


目的は、独自ドメインのhttpsサーバをaws上に立てること

  • ドメイン名だけを例えばChromeのアドレスに打って、セキュリティの警告も出ずにサクッと表示されるWebサーバを作る。

Route 53 でドメインの取得

  • ダッシュボードから、ドメイン名を購入する。

Certificate Managerで証明書の取得

  • 証明書のリクエストから、指定するドメイン名は、*.domain.exampleだけじゃなくて、別名としてdomain.exampleも追加しておく。
  • メール認証等で、approvalする。

EC2でインスタンスとロードバランサの作成

インスタンス

  • Amazon Linux AMIを選択、適当なタイプを選択して作成する。
  • Elastic IPで静的IPの取得と、インスタンスへの関連付けをする。
  • パブリックDNSは、sshで入るときに使うのでコピーしておく。
  • セキュリティグループのインバウンドルールで、HTTP許可を追加する。

ロードバランサ

  • ロードバランサをClassic Load Balancerで作成し、転送先のインスタンスを作成したインスタンスに指定する。
  • リスナーのhttpsには作成済みの証明書を指定して転送先は80ポート、httpも80に転送しておく。
  • セキュリティグループのインバウンドは、HTTP、HTTPSを許可しておく。
  • ヘルスチェックは、80番ポートのindex.phpとしておく。
  • ロードバランサのDNS名をコピーしておく。

Route 53に戻って、ドメインにエイリアスを設定

  • ドメインのレコードセットの作成で、名前は空、タイプはA(IPv4)、エイリアスはハイ、エイリアス先をロードバランサのDNS名にする。

Apache, PHP, MySQLのインストール

HTTPをHTTPSにリダイレクト

  • /etc/httpd/conf/httpd.conf の最後に以下を追加する。
/etc/httpd/conf/httpd.conf
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
  • ロードバランサからHTTPで来たものを、X-Forwarded-Protoで判定し、httpsに送るようにクライアントに依頼する。
  • ロードバランサ自体は、何もしていない。

ドメイン名だけをブラウザのアドレス欄に入力して、つながればOK!

その他

  • ロードバランサをClassic Load Balancerではなく、Applicatin Load Balancerにするとhttpからhttpsへの転送設定ができるっぽい。
  • 証明書は、ロードバランサではなくCloudFrontに関連付けることもできる。インスタンスに直接は、できないもよう。