LoginSignup
7
3

More than 5 years have passed since last update.

S3を使って独自ドメインで、「安く」HTTPS通信してBasic認証させたい

Posted at

いろんな要求が来る年の瀬です。2016年も、もうすぐ終わりですね。

今日のお悩み

  • 公開ドキュメントはS3におきたい。
  • 独自ドメインでhttps通信したいが、cloudfrontは高いので安い方法で
  • Basic認証するサイトとかあるから、それも実現させて欲しい

はて、そんなことできるのかな。

解決

今回は以下の構成で実現させました。

Route53 -> ALB -> EC2(Nginx) -> S3

  • サイトの内容はS3においておきます。
  • EC2のマイクロインスタンスかナノインスタンスを立てて、Nginxをインストールしてリバースプロキシを設定します。
  • ALBはドメイン毎に作成します。紐付け予定の証明書はここで紐付けします。(ACM)
  • Route53でドメインとALBを紐付けします

参考サイト

とはいえ、いろんな方法があるかと思います。
今回、実装するにあたって、いろいろな記事を参考にしました。
その上で予算や今後の運用に合わせて選ぶのがベストだと思います。

手順

> S3でサイトの公開準備

> EC2にNginxを設定する

  • Nginxのインストール
sudo yum update
sudo yum install -y nginx
sudo chkconfig nginx on
sudo /etc/init.d/nginx start
  • Basic認証用のパスワードファイルの作成
sudo htpasswd -cb .htpasswd_test <User> <PassWord>
  • confファイルの設定
    • Basic認証ありの場合
      • Basic認証用のパスワードファイルのパスを設定します。

server {
  listen       80;
  server_name  test.example.net;
  location / {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd_test;
    proxy_pass test.example.net.s3-website-ap-northeast-1.amazonaws.com/;
  }
}
  • Basic認証なしの場合

server {
  listen       80;
  server_name  static.example.com;
  location / {
    proxy_pass static.example.com.s3-website-ap-northeast-1.amazonaws.com/;
  }
}

> ALBの設定

  • ターゲットグループを作成します
    • 上記で作成したEC2インスタンスを登録します
    • ヘルスチェックは80/HTTP
  • ロードバランサを作成します
    • リスナーは443/HTTPS
    • この時に取得済みのサーバ証明書を設定します。
    • 上記で作成したターゲットグループを設定します。

> Route53の設定

紐付けしたいドメインに対して、上記で作成したALBを設定します。

route53.png

> 確認

それぞれアクセスしてみます。
OKですね!

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3