ฉันจะเปลี่ยนเส้นทาง www ไปที่ไม่ใช่ www ใน Route53 ได้อย่างไร


24

domain.comฉันโฮสต์เว็บไซต์ของฉันที่

รายการ DNS ของฉันใน Route53 มีดังนี้:

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ไปยังdomain.comเนื่องจากปัจจุบันแค่คืน 404 คำถามนี้เกี่ยวกับ SO จึงแนะนำให้PTRบันทึกและฉันเพิ่มว่า:

www.domain.com  PTR     domain.com           300

แต่มันไม่ทำงาน ฉันควรทำยังไงดี?


3
หากคุณต้องการส่งการเปลี่ยนเส้นทาง HTTP จริง ๆ คุณไม่สามารถทำได้ใน DNS หากคุณไม่สนใจเกี่ยวกับ URL ในการเปลี่ยนแถบที่อยู่ให้ใช้ CNAME ตามที่ pauska แนะนำ หากคุณสนใจคุณจะต้องใช้เว็บเซิร์ฟเวอร์ในการส่ง 301 ผู้ให้บริการ DNS บางรายมีบริการนี้ แต่ฉันไม่เชื่อว่า Route53 ทำเช่นนี้
cjc

@cjc ฉันไม่สนใจ URL ในแถบที่อยู่
fredley

คำตอบ:


22

PTR สำหรับการตั้งค่าการค้นหา IP แบบย้อนกลับและไม่ใช่สิ่งที่คุณควรใส่ใจ ย้ายมัน.

สิ่งที่คุณต้องการคือ CNAME สำหรับ www:

www.domain.com  CNAME  domain.com 300

15
นี่ไม่ใช่การเปลี่ยนเส้นทาง ในกรณีที่คุณต้องกำหนด URL การโทรกลับในบริการของบุคคลที่สามการแก้ปัญหาข้างต้นจะไม่ทำงาน ตัวอย่างเช่นการรับรองความถูกต้อง oAuth (Facebook, Twitter)
Ck-

14

คุณยังสามารถตั้งค่า ALIAS สำหรับ WWW เป็น A record of domain.com:

www.domain.com A ALIAS domain.com 300

ดังนั้นรายการ DNS สุดท้ายของคุณจะเป็นดังนี้:

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)

ฉันทำสิ่งนี้แล้ว แต่ก็ยังไม่ทำงาน มีอะไรอีกบ้างที่จำเป็นต้องทำ?
Utpal - Ur Best Pal

หลังจากเพิ่มนามแฝงฉันต้องลบแคชของเบราว์เซอร์เพื่อให้ใช้งานได้
trees_are_great

และขึ้นอยู่กับ TTL ก่อนหน้าของ DNS ของคุณ
Hardeep Singh

3

หลังจากคุณมี CNAME สำหรับทั้ง example.com และ www.example.com การกำหนดค่า nginx นี้จะเปลี่ยนเส้นทางการรับส่งข้อมูลจาก http ไปยัง https และ www.example.com ทั้งหมดไปที่ 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;
}

ที่เซิร์ฟเวอร์จริงของฉันพร้อมฟังบนพอร์ต 3000 ... นี่ยังเป็นการยกเลิก TLS ของฉัน แต่เพียงแค่ลบการพูดถึง ssl ... ที่ซ่อนอยู่ในไฟล์ที่รวมอยู่เหล่านั้นคือการตั้งค่า nginx ของฉันเพื่อทำให้กล่องแข็งขึ้น


-1

ดังที่กล่าวข้างต้นเป็นไปไม่ได้ที่ DNS มาตรฐาน

นี่คือทางออกที่ฉันใช้:

  • ตั้งค่า S3 ด้วยเว็บไซต์แบบคงที่เปลี่ยนเส้นทางไปยังโดเมนที่ไม่ใช่ www ของคุณ
  • สร้าง Cloudfront distibution ให้กับ S3 ของคุณ (ใช้โดเมน S3 ไม่ใช่ที่แนะนำในการเติมข้อความอัตโนมัติโดย AWS)
  • เพิ่มเส้นทาง 53 A นามแฝงบันทึกไปยังการกระจาย CloudFront

@Thomas ดูคำตอบที่แก้ไขแล้ว
natanavra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.