web-dev-qa-db-ja.com

Namecheap DNSを使用したAmazon S3静的ホスティング-非wwwプレフィックスURLを正しくルーティングする方法

私はこの問題の根底にたどり着くために他の投稿を読んでいます...しかし、私はいくつかの説明が必要です。

Www.FOO.com/MyDirectoryと入力すると、すべてのドメインリクエストを取得してAmazon S3バケットを完全にヒットさせることができます。

WwwなしでFOO.com/MyDirectoryと入力すると、失敗します。

同じAmazon S3バケットへのwwwルートなしでURLリクエストを行う適切な方法は何ですか?

どんなヒントでも大いに役立ちます。ありがとう

33
jremi

私はついに次の解決策にたどり着きました:

DNSとAmazon S3バケットに静的ホスティングを有効にしてNamecheapを使用しています...

このソリューションにより、ルートドメインとwwwドメインの両方にアクセスできるようになります。 namecheapの高度なDNS構成には、次の設定があります。

CNAME Record    @    domain.com.s3-website-us-west-1.amazonaws.com.
CNAME Record   www   www.domain.com.s3-website-us-west-1.amazonaws.com.

Amazon S3構成では、2つの個別のバケットが作成されています。

[S3 Bucket #1] 
Bucket name: www.domain.com
Static website hosting set to:
"Enable website hosting"

[S3 Bucket #2]
Bucket name: domain.com
Static website hosting set to: 
"Redirect all requests to another Host name" pointing to www.domain.com (Bucket #1)

この構成では、ルートドメインに着信するすべてのWebトラフィックがAmazon S3バケットコンテナー「domain.com」にヒットし、Amazonを介してすべての静的サービスを提供するプライマリS3バケット「www.domain.com」に自動リダイレクトされます。コンテンツ。

誰かがwwwドメインに直接接続しようとすると、Amazon S3コンテナー「www.domain.com」に直接移動するため、「domain.com」バケットを介してリダイレクトする必要はありません。

うまくいけば、これがルートドメイントラフィックを正しくルーティングすることで問題に直面している人を助けるでしょう。

39
jremi

そのため、jremiの回答を使用しましたが、以下で説明するように、メールの配信に問題がありました。 NameCheapのサポートをしばらくしてから、実用的なソリューションができました。

NameCheapセットアップ

CNAME Record          www   domain.com.s3-website-us-west-1.amazonaws.com.
URL Redirect Record   @     www.domain.com  (unmasked)

S3セットアップ(1つのバケットのみが必要)

[S3 Bucket] 
Bucket name: www.domain.com     <---- This must match your domain exactly
Static website hosting set to:
"Enable website hosting"

S3バケットポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.domain.com/*"
        }
    ]
}

これにより、domain.comとwww.domain.comの両方が機能し、NameCheapメールも機能します。

21
sirclesam

上記のsirclesamの方法を使用したところ、95%の方法で取得できましたが、AWS S3コンソールでいくつかの設定を変更するまでサイトはロードされませんでした。

実行する手順は次のとおりです。

  1. s3ダッシュボードに移動します
  2. 使用するバケット(www.domain.com)をクリックします
  3. 「permissions」ナビゲーションバータブをクリックします
  4. ボックスは2列で表示され、ボックスの右上隅に「編集」ボタンがあります-その編集ボタンをクリックします
  5. 合計4つのチェックボックスがあるはずです-下部のチェックを外します2
  6. 保存してからサイトにアクセスしてみてください

これは私のために働いた。最初に、1つ(3番目)のチェックボックスのみをチェックする必要があることを示すガイドに従っていましたが、その結果、バケットが引き続きアクセスをブロックするため、最後のチェックボックスをオフにすると問題が修正されました。

さらに明確にするために、最初のチェックボックス(チェックを外す必要があります)は「新しいパブリックバケットポリシーによって許可されたバケットおよびオブジェクトへのパブリックアクセスをブロックする」、2番目のチェックボックス(チェックを外す必要があります)は読み取り:「パブリックおよびクロスアカウントをブロックする」パブリックバケットポリシーを介したバケットとオブジェクトへのアクセス」

1
regs