静的なWebサイトを提供するために、Cloudfrontディストリビューションを作成しました。 S3はOriginサーバーです。クラウドフロントのURLにアクセスすると、S3の場所にリダイレクトされます。
d2s18t7gwlicql.cloudfront.netまたはtest.telekha.in
ブラウザでは https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/dashboard を表示しています
私は期待しています https://test.telekha.in/#/dashboard
Curlで https://test.telekha.in にアクセスすると、index.htmlドキュメントが返されます
Curlを使用して http://test.telekha.in にアクセスすると、
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>CloudFront</center>
</body>
</html>
ただし、ブラウザではhttpとhttpsの両方が https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/ にリダイレクトされます
この問題を解決する方法を教えてください。
問題が見つかりました。クラウドフロント構成です。 これ ブログが助けてくれました。
Originを定義するときに、S3バケットを直接選択しました。 telekha-test-www.s3-website.ap-south-1.amazonaws.comのようなS3バケットのドメインを入力する必要があります
これを見ていると思うかどうかを確認する最初のことは、以下のcurlコマンドを実行することです。 HTTP/1.1 307 Temporary Redirect
が返される場合、この問題が発生しています。
$ curl -I https://YOUR_CF_DOMAINNAME.cloudfront.net/
HTTP/1.1 307 Temporary Redirect
Content-Type: application/xml
Content-Length: 0
Connection: keep-alive
x-amz-bucket-region: ap-southeast-2
Location: http://yourS3bucketname.s3-ap-southeast-2.amazonaws.com/
Date: Wed, 12 Jul 2017 00:20:27 GMT
Server: AmazonS3
Age: 1775
X-Cache: Hit from cloudfront
Via: 1.1 someid.cloudfront.net (CloudFront)
X-Amz-Cf-Id: someguid==
この問題について私が見つけた最高の説明は次のとおりです。
S3は、グローバルRESTエンドポイント階層* .s3.amazonaws.comのDNSを更新し、バケットの作成後短時間内にバケットの適切なリージョンにリクエストを送信するレコードで、CloudFrontが依存しているように見えますこの最初の更新が完了する前に、S3はリダイレクトを返し、CloudFrontはそのリダイレクトをブラウザーに返します〜 michael-sqlbot
この問題は、実際には、S3でバケットを構成するときに発生するS3バケット名の内部DNS伝播(100%明確ではないが、可能性が高いと思われる)が原因であるため、構成することでこの問題を回避できるはずです。 Cloudfrontディストリビューションを構成する前のS3のパブリックWebサイト、および doco に従って、S3パブリックWeb名をs3バケット名ではなくクラウドフロントオリジンとして構成します。
参考までに、S3バケット名とS3ウェブサイト名の両方をCloudfrontオリジンとして設定しており、両方とも機能していると言えます! (最終的に?)
参照:
受け入れられた答えを拡張するには、特に参照されているブログ投稿の最後にあるこの部分が役立ちます。
数日前に微妙な「バグ」を見つけました。www.example.com/ about /のようなURLを使用すると、Amazon S3は実際にはフォルダー内の「index.html」ファイルを返します(静的ウェブサイトバケットとして設定されているため) )。
おもしろいことに、末尾のスラッシュ(www.example.com/about)を省略すると、S3は最初に「about」というオブジェクトが存在するかどうかをチェックします。そうでない場合、aboutはフォルダーであると見なされ、about /への301リダイレクトが発行されます。 CloudFrontを使用する場合、これはCloudFrontが実際にキャッシュすることを意味します...ファイル自体の代わりにリダイレクトを! したがって、無駄なリダイレクトを避けるために、すべてのURLが末尾のスラッシュで終わることを確認する必要があります。