web-dev-qa-db-ja.com

SSLを使用してCloudfrontがネイキッドドメインにwwwをリダイレクトする

これが以前に尋ねられた場合、私に許してください、これに触れる多くのリソースがありますが、何も私の特定の(https)ユースケースに適合しないようです。

https://www.example.comhttps://example.com にリダイレクトしようとしています。同様に、これは http://www.example.com から https://example.com に対して機能するはずです。

S3バケットのオリジンを使用してcloudfrontディストリビューションを設定し、httpをhttpsにリダイレクトし、cname example.comを追加し、ドメイン証明書を追加しました(これはwwwサブドメインとネイキッドドメインで機能します)。

また、www.example.comのcnameを使用して別のディストリビューションを設定し、証明書を追加し、(静的Webサイトホスティング)ですべてのリクエストを https://にリダイレクトする別のs3バケットにOriginを設定しましたexample.com

http://example.com から https://example.com の場合、リダイレクトは期待どおりに機能しますが、http(s)://www.example.comから- https://example.com はしません。

ルート53には、ルートドメインが最初のCloudfrontディストリビューションにエイリアスされ、wwwが2番目にエイリアスされています。

65
Marc Greenstock

この答えのおかげで解決策を見つけました: Amazon S3 Redirect and Cloudfront

要するに:

オリジンが単なるバケットIDである場合、CloudfrontはS3で設定されたリダイレクトルールを尊重しません。代わりに、提供されたs3静的Webサイトのホスト名にOriginを設定する必要がありました。

48
Marc Greenstock

次のようにAWSでウェブサイトをホストするには:

https://www.example.com、http://www.example.com、およびhttp://example.comall redirectshttps://example.com

必要がある:

  1. example.comおよびwww.example.comという名前の2つのS3バケットを作成します。

  2. これらの2つのバケットでStatic Website Hostingをオンにします。

  3. バケットwww.example.comのリダイレクトをhttps://example.comに設定します。バケットのプロパティでStatic Website Hosting=>すべてのリクエストを別のホスト名にリダイレクトしますターゲットバケットまたはドメインフィールドに、example.comを入力し、Protocolフィールド、入力https

  4. これらのバケットに対して、twoCloudFrontディストリビューションを作成します。この分布はそれぞれ、対応するバケットを指します。

  5. Origin Domain Nameの場合、Static Website Hostingセクションで提供されるバケットURLを提供します。 URLの形式(または類似)は次のとおりです。example.com.s3-website-us-west-1.amazonaws.com

    • 両方の配布セットHTTPからHTTPSへのリダイレクト。

    • Amazonのオートコンプリートが推奨するURLは使用しないでください!

    • 設定しないでくださいデフォルトのルートオブジェクトプロパティ!

  6. 対応するCloudFrontディストリビューションを指すようにwww.example.comおよびexample.comのAレコードを設定してDNSを構成します。

なぜ機能するのですか? CloudFrontは、両方の場合(wwwの有無にかかわらず)HTTPからHTTPSへのリダイレクトを提供します。 www.example.comのバケットは、example.comへのリダイレクトを提供します。このディストリビューションがない場合、バケットはhttps://www.example.comのリクエストをリダイレクトできません。 S3自体は、静的WebサイトホスティングのHTTPSをサポートしていません。

73
RKI