EC2で動作し、バケットの前でリバースプロキシとして動作するNginx(またはHAProxy)でこれを行うことはできますが、設定方法にまだ慣れていない場合は、ちょうどCloudFrontを使用する...もう一度。
ここでの解決方法は、各Webサイトのサブドメインを別々に配布することです。
バケットの名前がexample.comでus-west-2領域にあると仮定して、バケット上でWebサイトのホスティングを有効にしていることを確認してから、この場合はバケットのWebサイトのエンドポイントを確認しますexample.com.s3-website-us-west-2.amazomaws.comとなります。
subdomain1.example.comの場合、内容はexample.comバケットのsubdomain1/
となります。したがって、このサブドメイン用の新しいCloudFrontディストリビューションを作成し、代替ドメイン名としてsubdomain1.example.comを使用してCloudFrontディストリビューションを設定します。オリジンサーバでは、上記のバケットWebサイトのエンドポイントホスト名を使用します(パスなし - ホスト名のみ)。次に、Origin Pathを/subdomain1
に設定します。先頭にスラッシュがありますが、末尾にスラッシュはありません。
さて、この、分布は、(例えば)の要求を見たとき/images/cat.jpg
それはS3に送信します...しかし、それは、それは要求に起源パスを付加し、ためにバケツを依頼することを行う前に/subdomain1/images/cat.jpg
。
サブドメイン1のDNSを新しいCloudFrontディストリビューションにポイントすると、内容がバケット内のパスの下にあるサブドメインが必要になります。
各サブドメインについて繰り返します。この手順は、SDKまたはCLIのいずれかを使用して簡単に自動化されます。
最終的には、default is 200があるため、アカウントで作成できるCloudFrontディストリビューションの数を増やす必要があるかもしれませんが、これはユースケースを説明できる限り簡単なプロセスです。
もちろん、これを行う理由はアカウントごとの100バケット制限に関連する可能性がありますが、that limit is no longer a fixed limitです。 AWSでは、この制限を増やすよう依頼することができます。
いいえ、S3でnginxを実行することはできません - S3は単なる単純なディスクです。しかし、あなたが達成しようとしていることをするためにnginxは必要ありません。 S3 Webサイトホスティングではデフォルトで利用可能です。それはうまくいきませんでした。 –
フォルダにindex.htmlファイルをアップロードして、ブラウザからアクセスできるかどうかを確認しました。おそらく愚かなこと:私は、連結された文字列で、トリプルアクセスが拒否されました。 –