Amazon S3 で静的サイトをホスティングする、Static Website Hosting。
便利で高性能だが、Basic認証がかからない。
リバースプロキシを介することで対応してみる。
リバースプロキシサーバがボトルネックとなり、せっかくのStatic Website Hostingの性能も生かせないが、とりあえずやってみる。
以下、手順。
① webサーバでリバースプロキシの設定を行う。
ProxyPass /hoge http://xxx.s3-website-ap-northeast-1.amazonaws.com/app ProxyPassReverse /hoge http://xxx.s3-website-ap-northeast-1.amazonaws.com/app
② webサーバでリバースプロキシにBasic認証を設定
AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch AuthType Basic AuthName "Secret Zone" AuthUserFile /xxx/yyy/.htpasswd Require user fuga ...
③ S3のバケットポリシーで、送信元IPアドレスをwebサーバに絞る。
{ "Version": "2008-10-17", "Id": "Policy1403165896111", "Statement": [ { "Sid": "Stmt1403165893575", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::xxx/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "##.##.##.##/##" ] } } } ] }
元記事はこちらです。
「Amazon,S3にてBasic認証をかける」