Bagaimana cara mengarahkan www ke non-www di Route53?

24

Saya meng-host situs saya di domain.com.

Entri DNS saya di Route53 adalah sebagai berikut:

domain.com      A       xxx.xxx.xxx.xxx      300
domain.com      NS      stuff.awsdns-47.org  172800
domain.com      SOA     stuff.awsdns-47.org  900

Saya ingin mengarahkan lalu lintas dari www.domain.comke domain.com, karena saat ini ini hanya mengembalikan 404. Pertanyaan ini pada SO menyarankan PTRcatatan, dan saya menambahkan bahwa:

www.domain.com  PTR     domain.com           300

tapi itu tidak berhasil. Apa yang harus saya lakukan?

fredley
sumber
3
Jika Anda benar-benar ingin mengirim pengalihan HTTP, Anda tidak dapat melakukannya di dalam DNS. Jika Anda tidak peduli dengan perubahan URL di bilah alamat, gunakan CNAME seperti yang pauska sarankan. Jika Anda benar-benar peduli, Anda akan memerlukan semacam server web untuk mengirim 301. Beberapa penyedia DNS memiliki ini sebagai layanan, tetapi saya tidak percaya Route53 melakukan ini.
cjc
@ cjc Saya tidak peduli dengan URL di bilah alamat.
fredley

Jawaban:

22

PTR adalah untuk mengatur lookup IP terbalik, dan itu bukan sesuatu yang harus Anda pedulikan. Singkirkan.

Yang Anda butuhkan adalah CNAME untuk www:

www.domain.com  CNAME  domain.com 300
pauska
sumber
15
Ini bukan redirect. Dalam hal ini, Anda harus menentukan URL panggilan balik dalam semacam layanan pihak ketiga, solusi di atas tidak akan berfungsi. Misalnya Otentikasi oAuth (Facebook, Twitter).
Ck-
14

Anda juga dapat mengatur ALIAS untuk WWW ke Catatan domain.com:

www.domain.com A ALIAS domain.com 300

jadi entri DNS akhir Anda adalah sebagai berikut:

domain.com          A       xxx.xxx.xxx.xxx      300
domain.com          NS      stuff.awsdns-47.org  172800
domain.com          SOA     stuff.awsdns-47.org  900
www.domain.com      A       ALIAS domain.com (Hosted Zone ID)
Hardeep Singh
sumber
Saya telah melakukan ini tetapi masih tidak berfungsi. Ada hal lain yang mungkin harus dilakukan?
Utpal - Ur Best Pal
Setelah menambahkan alias, saya perlu menghapus cache browser untuk membuatnya berfungsi.
trees_are_great
Dan itu tergantung pada TTL sebelumnya dari DNS Anda.
Hardeep Singh
3

Setelah Anda memiliki CNAME untuk example.com dan www.example.com, konfigurasi nginx ini akan mengarahkan lalu lintas dari http ke https serta semua www.example.com ke example.com

server { 

    listen  80 ;

    server_name  example.com, www.example.com;

    rewrite ^/(.*) https://example.com/$1 permanent;
}

server {  #  redirect www to normal domain

    listen       443  ssl ;

    server_name www.example.com;

    include /etc/nginx/myprojname/include/ssl;

    return 301 https://example.com$request_uri;
}

server {

    listen  443 ssl ;

    include /etc/nginx/myprojname/include/ssl;

    server_name example.com;

    include /etc/nginx/snippets/nginx_common_location_443;

    location / {

        proxy_pass http://127.0.0.1:3000/;
    }

    include /etc/nginx/myprojname/include/custom_server_include;
}

di mana server saya yang sebenarnya naik dan mendengarkan pada port 3000 ... ini juga mengakhiri TLS saya tetapi hanya menghapus menyebutkan ssl ... tersimpan di file-file yang disertakan adalah pengaturan nginx saya untuk mengeraskan kotak

Scott Stensland
sumber
-1

Seperti disebutkan di atas, itu tidak mungkin dengan DNS standar.

Inilah solusi yang saya gunakan:

  • Siapkan S3 dengan situs web statis yang dialihkan ke domain non-www Anda
  • Buat distribusi Cloudfront ke S3 Anda (menggunakan domain S3, bukan yang disarankan dalam pelengkapan otomatis oleh AWS)
  • Tambahkan Rute 53 Catatan alias ke distribusi CloudFront
natanavra
sumber
@ Thomas lihat jawaban yang diedit.
natanavra