2016-12-24 1 views
0

私はAmazonでs3 + Cloudfrontソリューションを持っています。バケット内の別のフォルダに異なるWebサイトをホストして、この2つの方法のいずれかでアクセスします。 - サブドメイン - > mywebsite1.mydomain.com または - パス - > www.mydomain.com/mywebsite1nginxを使用して、s3バケットが複数のWebサイトを異なるフォルダにホストする方法はありますか?

私は、nginxに基づいたプロキシが私の問題を解決できることを読んだ。本当ですか? s3でnginxを入手することはできますか?

+1

いいえ、S3でnginxを実行することはできません - S3は単なる単純なディスクです。しかし、あなたが達成しようとしていることをするためにnginxは必要ありません。 S3 Webサイトホスティングではデフォルトで利用可能です。それはうまくいきませんでした。 –

+0

フォルダにindex.htmlファイルをアップロードして、ブラウザからアクセスできるかどうかを確認しました。おそらく愚かなこと:私は、連結された文字列で、トリプルアクセスが拒否されました。 –

答えて

1

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では、この制限を増やすよう依頼することができます。

関連する問題