Menyiapkan penerusan URL berbasis DNS di Amazon Route53 [ditutup]


140

Saya mencoba menyetel penerusan di Amazon Route53. Layanan DNS terakhir saya (Nettica) memungkinkan saya untuk merutekan permintaan ke "aws.example.com" ke "https://myaccount.signin.aws.amazon.com/console/".

Apakah fungsi ini didukung oleh Route53?

Bagaimana Nettica mencapai ini? Apakah itu memasukkan catatan A, CNAME, PTR, atau TXT khusus?


Membuat distribusi Cloudfront dengan URL sebagai asal juga berfungsi. Arahkan saja domain ke distribusi Cloudfront dari Route53 dan pastikan untuk mengkonfigurasi sertifikat TLS dengan benar.
Deiwin

Jawaban:


325

Saya mengalami masalah yang sama persis dengan yang dijelaskan Saurav, tetapi saya benar-benar perlu menemukan solusi yang tidak memerlukan apa pun selain Rute 53 dan S3. Saya membuat panduan cara untuk blog saya merinci apa yang saya lakukan.

Inilah yang saya pikirkan.


Objektif

Hanya menggunakan alat yang tersedia di Amazon S3 dan Amazon Route 53, buat URL Redirect yang secara otomatis meneruskan http://url-redirect-example.vivekmchawla.com ke halaman masuk AWS Console alias "MyAccount", yang terletak di https : //myaccount.signin.aws.amazon.com/console/ .

Panduan ini akan mengajarkan Anda mengatur penerusan URL ke URL apa pun, bukan hanya yang dari Amazon. Anda akan belajar cara mengatur penerusan ke folder tertentu (seperti "/ konsol" dalam contoh saya), dan cara mengubah protokol pengalihan dari HTTP ke HTTPS (atau sebaliknya).


Langkah Satu: Buat Bucket S3 Anda

Buka Konsol Manajemen S3 dan klik "Buat Bucket"

Buka konsol manajemen S3 dan klik "Buat Bucket".


Langkah Dua: Beri Nama Bucket S3 Anda

Beri nama Bucket S3 Anda

  1. Pilih Nama Bucket. Langkah ini sangat penting! Anda harus memberi nama ember PERSIS sama dengan URL yang ingin Anda siapkan untuk penerusan. Untuk panduan ini, saya akan menggunakan nama "url-redirect-example.vivekmchawla.com".

  2. Pilih wilayah apa pun yang paling cocok untuk Anda. Jika Anda tidak tahu, pertahankan standarnya.

  3. Jangan khawatir tentang pengaturan logging. Cukup klik tombol "Buat" saat Anda siap.


Langkah 3: Aktifkan Hosting Situs Web Statis dan Tentukan Aturan Routing

Aktifkan Hosting Situs Web Statis dan Tentukan Aturan Routing

  1. Di jendela properti, buka pengaturan untuk "Hosting Situs Web Statis".
  2. Pilih opsi untuk "Aktifkan hosting situs web".
  3. Masukkan nilai untuk "Dokumen Indeks". Objek ini (dokumen) tidak akan pernah dilayani oleh S3, dan Anda tidak perlu mengunggahnya. Cukup gunakan nama yang Anda inginkan.
  4. Buka pengaturan untuk "Edit Aturan Pengalihan".
  5. Tempel cuplikan XML berikut ini secara keseluruhan.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Jika Anda penasaran dengan apa yang dilakukan XML di atas, kunjungi Dokumentasi AWM untuk "Sintaks untuk Menentukan Aturan Perutean" . Sebagai contoh, teknik bonus (tidak tercakup di sini) meneruskan ke halaman tertentu di host tujuan http://redirect-destination.com/console/special-page.html. Baca tentang <ReplaceKeyWith>elemen jika Anda memerlukan fungsi ini.


Langkah 4: Catat "Endpoint" Bucket Pengalihan Anda

Catat Endpoint Redirect Bucket Anda

Catat "titik akhir" Hosting Situs Web Statis yang dibuat secara otomatis oleh Amazon untuk bucket ini. Anda akan membutuhkan ini untuk nanti, jadi sorot seluruh URL, lalu salin dan tempel ke notepad.

PERINGATAN! Pada titik ini Anda benar-benar dapat mengklik tautan ini untuk memeriksa apakah Aturan Pengalihan Anda sudah dimasukkan dengan benar, tetapi hati-hati! Inilah sebabnya ...

Katakanlah Anda memasukkan nilai yang salah di dalam <Hostname>tag di Aturan Pengalihan Anda. Mungkin Anda tidak sengaja mengetik myaccount.amazon.com, bukan myaccount.signin.aws.amazon.com. Jika Anda mengklik tautan untuk menguji URL Endpoint, AWS akan dengan senang hati mengarahkan browser Anda ke alamat yang salah!

Setelah mengetahui kesalahan Anda, Anda mungkin akan mengedit <Hostname>dalam Aturan Redirection Anda untuk memperbaiki kesalahan. Sayangnya, ketika Anda mencoba mengklik kembali tautan tersebut, kemungkinan besar Anda akan diarahkan kembali ke alamat yang salah! Meskipun Anda memperbaiki <Hostname>entri tersebut, peramban Anda sedang menyimpan entri sebelumnya (salah!). Ini terjadi karena kami menggunakan pengalihan HTTP 301 (permanen), yang peramban seperti Chrome dan Firefox akan melakukan cache secara default.

Jika Anda menyalin dan menempel URL Endpoint ke browser lain (atau menghapus cache di browser Anda saat ini), Anda akan mendapatkan kesempatan lain untuk melihat apakah <Hostname>entri yang Anda perbarui akhirnya adalah yang benar.

Agar aman, jika Anda ingin menguji URL Endpoint dan Aturan Pengalihan, Anda harus membuka sesi penelusuran pribadi, seperti "Mode Penyamaran" di Chrome. Salin, tempel, dan uji URL Titik Akhir dalam Mode Penyamaran dan apa pun yang di-cache akan hilang begitu Anda menutup sesi.


Langkah 5: Buka Konsol Manajemen Route53 dan Buka Set Kumpulan untuk Zona Hosted Anda (Nama Domain)

Buka Konsol Manajemen Route 53 untuk Menambahkan Kumpulan Rekaman ke Zona Host Anda

  1. Pilih Zona Hosted (nama domain) yang Anda gunakan saat membuat ember. Karena saya memberi nama ember saya "url-redirect-example.vivekmchawla.com", saya akan memilih Zona Hosted vivekmchawla.com.
  2. Klik pada tombol "Pergi ke Set Kumpulan".

Langkah 6: Klik tombol "Buat Catatan Set"

Klik tombol Create Record Set

Mengklik "Buat Catatan Set" akan membuka jendela Buat Catatan Set di sisi kanan Konsol Manajemen Route53.


Langkah 7: Buat Set Data CNAME

Buat Set Data CNAME

  1. Di bidang Nama, masukkan bagian nama host dari URL yang Anda gunakan saat memberi nama ember S3 Anda. "Bagian hostname" dari URL adalah segalanya untuk LEFT dari nama Zona Hosted Anda. Saya menamai ember S3 saya "url-redirect-example.vivekmchawla.com", dan Zona Host saya adalah "vivekmchawla.com", jadi bagian nama host yang perlu saya masukkan adalah "url-redirect-example".

  2. Pilih "CNAME - Nama Canonical" untuk Jenis Set Rekaman ini.

  3. Untuk Nilai, rekatkan di URL Titik Akhir dari ember S3 yang kami buat kembali di Langkah 3.

  4. Klik tombol "Buat Catatan Set". Dengan asumsi tidak ada kesalahan, Anda sekarang dapat melihat catatan CNAME baru di daftar Kumpulan Perangkat Hosted Zone Anda.


Langkah 8: Uji Pengalihan URL Baru Anda

Buka tab browser baru dan ketik URL yang baru saja kita siapkan. Bagi saya, itulah http://url-redirect-example.vivekmchawla.com . Jika semuanya berfungsi dengan baik, Anda harus dikirim langsung ke halaman masuk AWS.

Karena kami menggunakan myaccount.signin.aws.amazon.comalias sebagai URL tujuan pengalihan kami, Amazon tahu persis akun mana yang kami coba akses, dan membawa kami langsung ke sana. Ini bisa sangat berguna jika Anda ingin memberikan tautan masuk AWS pendek, bersih, dan bermerek kepada karyawan atau kontraktor.

Semua selesai!  Penerusan URL Anda akan membawa Anda ke halaman masuk AWS.


Kesimpulan

Saya pribadi menyukai berbagai layanan AWS, tetapi jika Anda memutuskan untuk memigrasikan manajemen DNS ke Amazon Route 53, kurangnya penerusan URL yang mudah bisa membuat frustasi. Saya harap panduan ini membantu membuat pengaturan penerusan URL untuk Zona Hosted Anda sedikit lebih mudah.

Jika Anda ingin mempelajari lebih lanjut, silakan lihat halaman-halaman berikut dari situs Dokumentasi AWS.

Bersulang!


15
+1 untuk solusi yang benar-benar cerdas ini - terima kasih banyak telah meluangkan waktu untuk menyusun panduan langkah demi langkah yang epik ini, saya telah memperbarui jawaban saya untuk merujuk pembaca masa depan ke milik Anda!
Steffen Opel

23
Catatan :: Bagi yang menginginkan pengalihan domain root: example.org -> example.com - lakukan semuanya dengan sama kecuali gunakan Rekaman dengan "Alias: Ya" diaktifkan. Kemudian pilih ember sebagai target.
JaredBroad

10
Solusi bagus Tapi saya mengalami masalah menggunakan https untuk URL asli. Jika ember yang saya arahkan kembali adalah dev.example.com, mengarahkan ulang berfungsi dengan baik untuk http: // dev.example.com tetapi gagal untuk https: // dev.example.com. Saya belum menemukan solusi untuk masalah ini.
Greg

4
@ Greg Saya pikir itu mungkin ada hubungannya dengan bagaimana Amazon menangani HTTPS untuk S3. Sayangnya, saat menggunakan CNAME untuk mengakses bucket S3, Anda tidak dapat memaksa SSL dengan menambahkan "https" karena Amazon tidak meng-hosting sertifikat untuk "* .example.com". Karena S3 tidak akan mengizinkan koneksi, kami tidak pernah mendapatkan logika redirect. Sayangnya, saya tidak dapat melihat solusi untuk ini.
Vivek M. Chawla

17
Ada opsi baru "Redirect semua permintaan ke nama host lain" di bawah opsi bucker. Saya taruh di sana tanda IAM di url dan itu berfungsi seperti pesona, tidak perlu untuk XML.
Dan Milon

145

Dukungan AWS menunjukkan solusi yang lebih sederhana. Ini pada dasarnya ide yang sama yang diusulkan oleh @Vivek M. Chawla, dengan implementasi yang lebih sederhana.

AWS S3:

  1. Buat Bucket bernama dengan domain lengkap Anda, misalnya aws.example.com
  2. Pada properti bucket, pilih Redirect all requests to another host namedan masukkan URL Anda: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Buat record set type A. Ubah Alias ​​ke Yes. Klik Alias Targetbidang dan pilih ember S3 yang Anda buat di langkah sebelumnya.

Referensi: Cara mengarahkan ulang domain menggunakan Amazon Web Services

Dokumentasi resmi AWS: Apakah ada cara untuk mengarahkan ulang domain ke domain lain menggunakan Amazon Route 53?


16
Ini berfungsi baik untuk HTTP tetapi tidak HTTPS.
mythofechelon

@mythofechelon Apa maksudmu? Saya belum punya masalah dengan https sejauh ini. Jika Anda ingin menggunakan https dengan domain Anda (mis: https: // aws.example.com), ini adalah masalah yang sama sekali berbeda, karena Anda akan memerlukan server dengan sertifikat ssl untuk dapat melakukannya.
Roberto Schneiders


2
Apakah Redirect all requests to another host nameopsi ini masih ada? Saya tidak bisa melihatnya ketika saya pergi ke properti bucket.
Aidan

1
Ini harus menjadi jawaban yang benar, lebih baik untuk referensi komponen di dalam AWS menggunakan Alias ​​untuk tujuan kinerja daripada CNAME (yang berfungsi tetapi itu bukan pendekatan terbaik).
Douglas Figueroa

11

Saya dapat menggunakan nginx untuk menangani pengalihan 301 ke halaman masuk aws.

Buka folder conf nginx Anda (dalam kasus saya ini adalah /etc/nginx/sites-availabletempat saya membuat symlink /etc/nginx/sites-enableduntuk file conf yang diaktifkan).

Kemudian tambahkan jalur redirect

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Jika Anda menggunakan nginx, kemungkinan besar Anda akan memiliki blok server tambahan (virtualhosts dalam terminologi apache) untuk menangani apex zona Anda (example.com) atau bagaimanapun Anda telah mengaturnya. Pastikan Anda menetapkan salah satu dari mereka untuk menjadi server default Anda.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

Di Rute 53, tambahkan A recorduntuk aws.example.comdan atur nilainya ke IP yang sama dengan yang digunakan untuk puncak zona Anda.


Bahkan lebih baik menggunakan catatan Alias ​​untuk menunjuk ke penyeimbang beban elastis di depan mesin ini.
maletor

9

Memperbarui

Sementara jawaban asli saya di bawah ini masih valid dan mungkin membantu untuk memahami penyebab penerusan URL berbasis DNS tidak tersedia melalui Amazon Route 53 di luar kotak, saya sangat menyarankan untuk memeriksa solusi tidak langsung yang sepenuhnya cerdas dari Vivek M. Chawla melalui yang diperkenalkan saat itu. Dukungan Amazon S3 untuk Pengalihan Situs Web dan mencapai server mandiri kurang dan dengan demikian solusi gratis dalam AWS hanya seperti itu.

  • Menerapkan solusi otomatis untuk menghasilkan arahan ulang tersebut dibiarkan sebagai latihan bagi pembaca, tetapi harap berikan penghormatan kepada jawaban epik Vivek dengan menerbitkan solusi Anda;)

Jawaban Asli

Nettica harus menjalankan solusi pengalihan khusus untuk ini, ini masalahnya:

Anda dapat membuat alias CNAME seperti aws.example.comuntuk myaccount.signin.aws.amazon.com, namun, DNS tidak memberikan dukungan resmi untuk aliasing subdirektori seperti consoledalam contoh ini.

  • Sangat disayangkan bahwa AWS tampaknya tidak melakukan ini secara default ketika memukul https://myaccount.signin.aws.amazon.com/(saya baru saja mencoba), karena itu akan menyelesaikan masalah Anda segera dan membuat banyak akal di tempat pertama; selain itu, seharusnya cukup mudah untuk mengkonfigurasi pada akhirnya.

Karena alasan itu beberapa penyedia DNS rupanya menerapkan solusi khusus untuk memungkinkan pengalihan ke subdirektori; Saya berani menebak bahwa mereka pada dasarnya memfasilitasi alias CNAME untuk domain mereka sendiri dan mengarahkan kembali dari sana ke tujuan akhir melalui Pengalihan HTTP 3xx langsung .

Jadi untuk mencapai hasil yang sama, Anda harus memiliki layanan HTTP yang menjalankan pengalihan ini, yang bukan solusi sederhana yang tentu saja diharapkan. Mungkin / Semoga seseorang bisa datang dengan pendekatan yang lebih cerdas.


3
CNAME adalah alias, dan jangan dialihkan.
ejain

@ Jain - Anda benar tentu saja, saya sudah memperbaiki ini (pasti telah melewatkan notifikasi saat itu); terima kasih telah menunjukkan ungkapan yang berpotensi menyesatkan ini!
Steffen Opel

0

Jika Anda masih mengalami masalah dengan pendekatan sederhana, buat ember kosong kemudian di Redirect all requests to another host namebawah hosting web Statis di properti melalui konsol. Pastikan bahwa Anda telah menetapkan catatan 2 A di route53, satu untuk final-destination.comdan satu untuk redirect-to.final-destination.com. Pengaturan untuk masing-masing ini akan sama, tetapi namanya akan berbeda sehingga cocok dengan nama yang Anda tetapkan untuk kotak / URL Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.