Saya mencoba melakukan sesuatu yang seharusnya relatif mudah - saya ingin mengatur beberapa domain dan subdomain untuk mengalihkan ke domain inti untuk situs kami, tetapi saya ingin meletakkan pengalihan di Cloudfront. Semuanya berfungsi kecuali mengarahkan ulang jalur root - yang memberi saya file XML yang sebagian menggambarkan ember S3.
Latar Belakang
S3
S3 memungkinkan Anda untuk menyiapkan bucket semua-redirect , seperti:
Pengujian ini, titik akhir web (brass9-com.s3-website-us-west-1.amazonaws.com) melakukan apa yang seharusnya - itu dialihkan ke brass9.com. Baik.
Cloudfront
Cloudfront memungkinkan Anda menunjuk ke ember S3, tetapi cara itu menyarankan Anda salah - daripada menunjuk ke ember dengan namanya, seperti brass9-com.s3.amazonaws.com, Anda harus menggunakan Titik Akhir Web di atas. Selain itu, Anda dapat membiarkan semuanya default dan mendapatkan perilaku pengalihan yang baik. Jadi, jalur seperti www.brass9.com/portfolio dengan benar mengalihkan ke tempat yang seharusnya. Bagus juga.
Masalahnya - redirect domain root
Satu hal yang kemudian gagal berfungsi adalah mengalihkan dari www.brass9.com polos . Alih-alih membuat Anda mengarahkan, itu membuat Anda mendapatkan hasil yang aneh ini:
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
BAIK... . Jadi ini tidak sepenuhnya tidak terduga - karena tidak ada Objek Root Default. Tapi Objek Root Default apa yang mungkin saya tentukan untuk mencegah perilaku ini? Apa nama objek redirect S3, jika ada, yang perlu saya tunjuk? Atau apakah ada konfigurasi yang tepat lainnya, atau ini hanya bug dalam bagaimana Cloudfront dan S3 berinteraksi yang perlu diperbaiki Amazon?
Solusi Tidak Diketahui: Objek Root Default
Dimungkinkan untuk menentukan Obyek Root Default index.html, tetapi tidak membantu - hanya mengubah masalah. URL Cloudfront alih-alih diarahkan ke /index.html di situs utama, yaitu 404 (kami tidak menggunakan file index.html, ini adalah situs yang didorong kerangka kerja server-side). Saya bisa meletakkan index.html di server, tapi itu mengalahkan kenaikan kecepatan kecil menggunakan Cloudfront di tempat pertama.
Pertanyaan serupa
Satu pertanyaan menanyakan hal serupa tetapi mendapatkan kembali respons kosong 0-byte untuk beberapa alasan, bukan apa yang saya lihat, respons XML. Itu tidak termasuk pertanyaan tentang masalah itu atau resolusi.
Artikel terkait
Satu artikel mengusulkan Anda hanya melayani seluruh situs pada domain kosong dan www . Ini mengacaukan bookmark pengguna mana pun, peringkat pencarian Anda, dll, dll. Anda seharusnya tidak melakukan ini.
Beberapa membahas hosting situs web statis di S3 dan Cloudfront daripada skema pengalihan, dan begitu juga tidak terkait.
Jadi, bagaimana saya melakukan ini dengan benar?
Cuplikan layar Konfigurasi Cloudfront - tidak ada Objek Root Default, menunjuk ke asal S3. Abaikan InProgress - Saya baru saja mengaktifkan dan menonaktifkan Objek Root default untuk menguji.
Dan konfigurasi asal untuk Distribusi itu:
sumber
GET /
sejak sebelum Anda mengoreksi konfigurasi Anda untuk menggunakan titik akhir web.Jawaban:
Jika Anda memiliki masalah ini, periksa terlebih dahulu ketika Anda mengkonfigurasi asal ember s3 untuk cloudfront, autocomplete mengembalikan domain endpoint s3 REST.amazonaws.com yang mengembalikan respons ListBucketResult ini.
Anda harus menuliskan secara manual domain titik akhir situs web.s3-website-region.amazonaws.com
Penting: Jika Anda salah mengkonfigurasi cloudfront dengan titik akhir REST, Anda harus membatalkan cache melalui Invalidasi atau akan tetap mengembalikan respons REST
sumber
origin
blok distribusi, gunakanaws_s3_bucket.BUCKET.website_endpoint
didomain_name
(tidakbucket_regional_name
) dan tambahkancustom_origin_config
blok.Solusi: Atur Pengalihan seperti yang dinyatakan dalam pertanyaan lalu tunggu waktu cache S3 dan CloudFront. Mereka bisa 4 jam atau lebih, jadi Anda hanya perlu mengatur semuanya lalu menunggu dan berharap yang terbaik.
(Ini adalah solusi Michael dari Komentar, tetapi sekarang sudah bertahun-tahun dan ini benar-benar layak untuk ditandai sebagai Dijawab).
sumber
Menulis sebagai jawaban karena saya tidak dapat berkomentar - dari dokumentasi di http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements sepertinya Anda dapat memiliki objek root default kosong:
sumber