การโฮสต์แบบคงที่บน Amazon S3 - การกำหนดค่า DNS


117

ฉันกำลังทำงานกับเว็บแอปเล็ก ๆ (ฝั่งไคลเอ็นต์ทั้งหมด) ฉันต้องการโฮสต์บน Amazon S3 ฉันพบคำแนะนำหลายอย่างเกี่ยวกับเรื่องนี้และได้จัดการสร้างที่เก็บข้อมูล (ชื่อเดียวกับโดเมนของฉัน) ตั้งเป็นเว็บไซต์และอัปโหลดเนื้อหาบางส่วน

สิ่งที่ฉันกำลังดิ้นรนและเมื่อเอกสารทั้งหมดเริ่มคลุมเครือเล็กน้อยคือวิธีกำหนดค่า DNS ของฉันอย่างถูกต้อง

ผู้รับจดทะเบียนทั้งหมดของฉัน ( 123-reg ) สามารถแนะนำได้คือการส่งต่อเว็บซึ่งทำให้ฉันมี mydomain.com.s3.amazonaws.com

ฉันต้องกำหนดค่าอะไรและที่ไหน (เช่น 123-reg / Amazon) ฉันจะได้รับ URL ที่สะอาด


เนื่องจากคำถามนี้ถูกถามสิ่งต่างๆจึงเปลี่ยนไป ขณะนี้คุณสามารถโฮสต์ไซต์ของคุณบน S # ด้วยโดเมนรากได้แล้วโปรดดูรายละเอียดเพิ่มเติมที่นี่: docs.aws.amazon.com/AmazonS3/latest/dev/…
พอร์

คำตอบ:


248

ดูเหมือนว่าคุณทำงานส่วนใหญ่ไปแล้ว เพื่อความชัดเจนฉันจะดำเนินการตามขั้นตอนเหล่านั้นอีกครั้งเพื่อให้แน่ใจว่าคุณได้ตั้งค่าอย่างถูกต้อง:

  1. สร้างที่เก็บข้อมูล s3 โดยใช้ชื่อโดเมนของคุณเป็นชื่อที่เก็บข้อมูล (ชื่อที่เก็บข้อมูลของคุณควรเป็น www.example.com หากคุณต้องการให้ไซต์ของคุณเป็น example.com หรือ www.example.com)

  2. อัปโหลดเนื้อหาของคุณไปยังถัง s3 เลือกชื่อที่สอดคล้องกันสำหรับไฟล์ดัชนีเว็บไซต์ของคุณ (โดยปกติ index.html) คุณยังสามารถอัปโหลดเพจที่กำหนดเองสำหรับข้อผิดพลาด 404 Not Found เรียกสิ่งนี้ว่า 404.html ให้สิทธิ์อ่านทุกไฟล์ในเว็บไซต์ของคุณเพื่อให้บุคคลทั่วไปสามารถดูได้ อย่าให้สิทธิ์พิเศษใด ๆ กับที่เก็บข้อมูลเฉพาะไฟล์ที่อยู่ภายใน

  3. กำหนดค่าที่เก็บข้อมูลของคุณเป็นเว็บไซต์ ด้วยคอนโซล AWS ( https://console.aws.amazon.com/s3/ ) คุณสามารถเลือกที่เก็บข้อมูลคลิกคุณสมบัติจากนั้นเลือกแท็บ "เว็บไซต์" คลิกเปิดใช้งานและตั้งค่าเอกสารดัชนีของคุณเป็น "index.html" และเอกสารข้อผิดพลาดของคุณเป็น "404.html" คุณจะต้องตั้งค่าที่เก็บข้อมูลของคุณด้วยสิทธิ์การเข้าถึงเพื่ออนุญาตการเข้าถึงผ่านเว็บ ( http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html )

  4. จด URL "ปลายทาง" ในแท็บการกำหนดค่าเว็บไซต์ นี่คือที่ที่เว็บไซต์ของคุณอาศัยอยู่ คุณสามารถเปิดลิงก์ในหน้าต่างใหม่และคุณจะเห็นเว็บไซต์ของคุณในลักษณะที่ปรากฏ คลิกไปรอบ ๆ และตรวจสอบให้แน่ใจว่าทุกอย่างทำงานตามที่คาดไว้

คุณต้องใช้ที่อยู่ปลายทางในทุกขั้นตอนด้านล่างนี้ www.example.com.s3.amazonaws.com แบบปกติจะไม่ทำงานคุณต้องใช้เวอร์ชันภูมิภาค ( http://www.example.com.s3-website-us-east-1.amazonaws.com/ )

ตอนนี้เราสามารถตั้งค่า DNS เพื่อให้คุณมี URL ที่กำหนดเองที่ชัดเจน

ขั้นแรกเราจะจับคู่ www.example.com กับไซต์ของคุณ

ใช้เครื่องมือของผู้ให้บริการ DNS (123-reg ในกรณีของคุณ) คุณต้องสร้างระเบียน CNAME เพื่อแมป www.example.com กับ www.example.com.s3-website-us-east-1.amazonaws.com

CNAME เป็นสิ่งเดียวที่คุณต้องการหากคุณต้องการแค่ www.example.com คนส่วนใหญ่ยังต้องการให้ "example.com" ทำงานดังนั้นเราจึงต้องไปอีกขั้น

example.com มักเรียกว่าโดเมนเปล่าหรือบันทึกส่วนบนของโดเมน สาเหตุที่ทำให้เกิดปัญหาคือไม่สามารถเป็น CNAME ได้ CNAME ใช้งานได้เฉพาะกับโดเมนย่อยเช่น "www." ทำให้ชี้ไปที่ s3 ได้ยากขึ้น

วิธีการปกติคือการใช้บริการเพื่อเปลี่ยนเส้นทางโดยอัตโนมัติคำขอใด ๆ ที่ไปที่ example.com เพื่อชี้ไปที่ www.example.com จากนั้นจะรับระเบียน CNAME ของคุณและไซต์ของคุณจะได้รับจาก s3

การเปลี่ยนเส้นทางอัตโนมัติไม่สามารถทำได้ด้วย DNS เก่าธรรมดาดังนั้นคุณต้องใช้บริการอื่น ผู้ให้บริการ DNS บางรายเสนอบริการนี้พร้อมกับ DNS ของตน (GoDaddy ทำ, amazon route53 ไม่มีไม่แน่ใจเกี่ยวกับ 123-reg)

หากผู้ให้บริการ DNS ของคุณไม่ดำเนินการดังกล่าวมีบริการฟรีบางอย่าง ที่ฉันเคยใช้คือhttp://wwwizer.com/naked-domain-redirectซึ่งไม่ต้องลงทะเบียนหรือชำระเงินใด ๆ

ในการใช้บริการประเภทนี้คุณต้องสร้างระเบียน DNS "A" สำหรับโดเมนเปล่าของคุณ สำหรับบริการ wwwizer.com คุณจะต้องสร้างระเบียน A เพื่อชี้ให้ example.com ไปที่ 174.129.25.170 นั่นคือทั้งหมด!

ดังนั้นด้วยการตั้งค่านี้หากผู้ใช้พิมพ์ example.com ในเบราว์เซอร์สิ่งต่อไปนี้จะเกิดขึ้น:

  1. แบบสอบถาม DNS: example.com -> 174.129.25.170 (บริการของ wwwizer.com)
  2. HTTP ขอไปที่ 174.129.25.170 สำหรับ example.com
  3. 174.129.25.170 เปลี่ยนเส้นทาง example.com -> www.example.com
  4. แบบสอบถาม DNS: www.example.com -> CNAME ถึง www.example.com.s3-website-us-east-1.amazonaws.com
  5. แบบสอบถาม DNS: www.example.com.s3-website-us-east-1.amazonaws.com -> ชี้ไปที่ Amazon S3
  6. ขณะนี้คำขอ HTTP สำหรับ www.example.com ให้บริการโดย Amazon S3

สนุก!


2
ขอบคุณมากสำหรับความชัดเจนของสิ่งนั้น! ฉันได้ทำการเปลี่ยนแปลงแล้วเพียงแค่รอให้มันเข้าสู่ประตูที่เหมาะสมทุกอย่างก็จะทำงานได้
Merlin Mason

อืมยังดูเหมือนจะไม่ทำงาน นี่คือ screengrab ของ DNS config - cl.ly/CP6U จุดท้ายดูน่าสงสัยฉันไม่ได้เพิ่มเข้าไปในนั้นและวาง URL นั้นในเบราว์เซอร์โดยมีจุดที่ท้ายทำให้ฉันมีข้อผิดพลาดที่ไม่จริง ฉันพยายามลบออก แต่มันกลับมาอีกครั้งเมื่อฉันบันทึกและฉันพยายามแทนที่ด้วย / แต่แล้วฉันก็ได้รับข้อผิดพลาดที่ไม่ถูกต้อง คุณคิดว่านี่อาจเป็นปัญหาที่ 123-regs end หรือไม่?
Merlin Mason

สวัสดี Merlin ฉันลองค้นหาชื่อโดเมนของคุณ (wpfill.me) และไม่เห็นบันทึกใด ๆ ในภาพหน้าจอของคุณ 123-reg มีขั้นตอน "เผยแพร่" หรือ "กระทำ" แยกกันไหม ดูเหมือนว่าการกำหนดค่าของคุณจะไม่มีผล
secretmike

อืมฉันคิดว่าต้องมีปัญหากับ 123-reg ฉันลองรีเซ็ตระเบียน DNS และรอ 48 ชั่วโมงเพื่อเผยแพร่ แต่ก็ยังไม่มีความสุข จากนั้นฉันก็เปลี่ยนโฮสติ้ง DNS ไปเป็น Cloudflare และทำให้ทุกอย่างพร้อมใช้งานใน 20 นาที :) ขอบคุณสำหรับความช่วยเหลือของคุณขอบคุณจริงๆ!
Merlin Mason


1

ฉันเชื่อว่าคุณต้องเลือกเอกสารทั้งหมดในที่เก็บข้อมูลของคุณคลิกขวาแล้วเลือก "เปิดเผยต่อสาธารณะ" คุณต้องทำสิ่งนี้ทุกครั้งที่มีการเปลี่ยนแปลงในที่เก็บข้อมูลด้วย จากนั้นฉันมักจะคลิกขวาที่ที่เก็บข้อมูลเลือกคุณสมบัติเลือกสิทธิ์ในบานหน้าต่างด้านขวาจากนั้นเพิ่ม "ทุกคนในฐานะ" ผู้รับสิทธิ์ "จากนั้นให้สิทธิ์" รายการ "เท่านั้นส่วนที่เหลือของบทความของคุณยอดเยี่ยมมากส่วนเกี่ยวกับโดเมนเปล่าช่วยได้ ฉันแก้ปัญหาของฉันได้นอกจากนี้คุณยังสามารถเปลี่ยนเส้นทางโดเมนเปล่าไปยังโดเมน www ภายใน S3 ภายใต้ "การโฮสต์เว็บไซต์แบบคงที่" ซึ่งอาจเป็นวิธีที่ง่ายที่สุดขอขอบคุณอีกครั้งสำหรับความช่วยเหลือทั้งหมดของคุณ

ทิม


3
ขั้นตอนด้วยตนเองนี้ไม่จำเป็นหากคุณใช้นโยบายที่เก็บข้อมูลตามที่อธิบายไว้ข้างต้น
tooluser

1

อัปเดต 2019

ณ วันนี้การตั้งค่า DNS ต่อไปนี้ได้ผลสำหรับฉันในการทำให้เว็บไซต์คงที่ AWS S3 ทำงานได้:

การตั้งค่า DNS สำหรับการแมปที่เก็บข้อมูล


0

จากหน้าจอ DNS ขั้นสูงบนแผงควบคุม 123-reg ของคุณ

  • ฉันเริ่มต้นด้วยการคลิกปุ่ม "รีเซ็ต DNS" เป็นการตั้งค่า 123-reg เริ่มต้น

สิ่งนี้ทำให้ฉันมีสิ่งต่อไปนี้

DNS EntryType       PriorityTTLDestination/Target
*                 A                                 81.xx.xx.xx              
@               A                                 81.xx.xx.xx              
@               MX          10               xx0.123-reg.co.uk
@               MX          20               xx1.123-reg.co.uk

  • จากนั้นฉันก็เพิ่มรายการนี้

www          CNAME                    www.example.com.s3-website-us-east-1.amazonaws.com

จากคู่มือจัดการ DNS ในรูปแบบ pdfระบุว่า "@ record" หมายถึง "โดเมนของคุณในรูปแบบที่บริสุทธิ์ที่สุดโดยไม่มีโดเมนย่อย" เช่นโดเมนเปล่า stackoverflow.com

แต่ไม่ได้กล่าวถึงว่า "ระเบียน *" คืออะไรฉันคิดว่าน่าจะจับโดเมนย่อยทั้งหมดและคิดว่ามันอาจเกินระเบียน CNAME แต่ดูเหมือนจะไม่เป็นเช่นนั้น

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