Appleの規定のおかげで、CDNをhttpsに対応させなきゃならなくなったのでAkamaiとS3を使った形を作ってみたお話。
※つらつらと備忘録のつもりで書いたのでわかりにくかったらごめんなさい
前提
- Akamaiでhttpsを使おうとするとオリジン側もhttpsに対応していることが前提だそうな。
Client-Edge間をSSL化するならオリジンもSSL化して、OriginからClientまでSSL通信のがセキュリティ上望ましい・・・のはわかる。 - AmazonS3のStatic Website Hostingはhttpsに対応していない。
さてどうすっかー(選択肢)
- CloudFrontに切り替える。
AWS同士なので一番楽。けど、残ったAkamaiどうするという問題が。 - AkamaiとS3の間にELB-EC2を挟んでOrigin化する。
コスト増+運用面倒だが、nginxのReverseProxyによるOriginアクセスの担保とELBによるSSL対応が可能。 - AkamaiとS3の間にCloudFrontを挟む。
CloudFront単体で配信できるっしょw - AmazonS3のLinkアドレスを使う。
S3のファイルプロパティの所にhttpsのアドレスが書いてある。これ使えそう。
S3のhttpsアドレスでやってみよう
- まずはオリジンとなるS3の確認
https://s3-ap-northeast-1.amazonaws.com/[BucketName]/ がオリジンになる。 - Akamaiのオリジン設定に放り込む
オリジンサーバのホスト名を、上記のドメイン部分を設定
[s3-ap-northeast-1.amazonaws.com]を設定
オリジンベースパスにディレクトリ部分
[BucketName]
オリジンの設定はこれだけ。S3へのhttpsアクセスが解放されていればAkamaiからもアクセス可能になっているはずです。
結果こうなった
注意点
- このオリジン設定だとDirectoryIndexが効きません。
そのため全てのパスを絶対指定してください。
ディレクトリ指定で終わる場合は403が返ってきます。 - クライアントとアカマイ間の設定は、ここに書いていません。