โดย จอร์เจีย โนลา
# การโฮสต์ไซต์อย่างง่ายด้วย Amazon S3 และ HTTPS
เฮ้ทุกคน!
ในบทช่วยสอนนี้ IâÃÂàจะแสดงวิธีโฮสต์เว็บไซต์แบบสแตติกด้วย HTTPS บน AWS ด้วยโดเมนที่กำหนดเอง ทั้งหมดนี้เป็นไปได้โดยใช้ AWS Free Tier
อย่างไรก็ตาม บริการที่เราจะใช้มีค่าใช้จ่ายเล็กน้อย โดยทั่วไป ค่าเหล่านี้ไม่ควรเกิน $1/เดือน
เราจะใช้บริการของ AWS ต่อไปนี้ร่วมกัน:
âÃÂÃÂS3
âÃÂàรูท 53
âÃÂàตัวจัดการใบรับรอง
âÃÂàCloudFront
*มาเข้าเรื่องกันเลย!*
ตั้งค่าบัคเก็ต S3 ของคุณ
อันดับแรก คุณต้องใช้
**ที่ฝากข้อมูล S3 สองแห่งควรตรงกับชื่อโดเมนที่คุณกำหนดเอง โดยที่สองรวมถึงโดเมนย่อย www
ที่เก็บข้อมูล 1:
ที่เก็บข้อมูล 2:
ที่เก็บข้อมูลแรก (mywebsite.com) คือที่เก็บข้อมูลหลักสำหรับไซต์ของคุณ ประกอบด้วยไฟล์และเนื้อหาทั้งหมดของคุณสำหรับเว็บไซต์แบบคงที่ของคุณ
ต่อไปเราจะตั้งค่าบัคเก็ตนี้สำหรับการโฮสต์ไซต์แบบคงที่ คุณสามารถค้นหาสิ่งนี้ได้ภายใต้แท็บคุณสมบัติของที่ฝากข้อมูล และเราจะคงค่าเริ่มต้นที่ให้ไว้ที่นี่โดยตั้งค่าดัชนีของไซต์เป็น index.html
เรายังจำเป็นต้องทำให้บัคเก็ตนี้เข้าถึงได้เนื่องจากเบราว์เซอร์ของผู้ใช้จะต้องเข้าถึงไฟล์ของบัคเก็ตเพื่อแสดงผลเว็บไซต์ เราสามารถทำได้โดยตั้งค่านโยบายฝากข้อมูลใต้แท็บสิทธิ์
{ "เวอร์ชัน": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal":"Action": "s3:GetObject", "ทรัพยากร": "MY_BUCKET_ARN"} ]}
นี่เป็นนโยบายง่ายๆ ที่จะอนุญาตให้เข้าถึงการอ่านแบบสาธารณะของวัตถุในบัคเก็ตเท่านั้น ตอนนี้ หากคุณไปที่จุดสิ้นสุดที่กำหนดไว้ในการกำหนดค่าโฮสติ้งคงที่ของบัคเก็ต คุณควรเห็นเว็บไซต์ของคุณ
ความคืบหน้า! แต่เราสามารถทำได้ดีกว่านั้น
ที่เก็บข้อมูลที่สอง (www.mywebsite.com) เราจะเว้นว่างไว้ แต่กำหนดค่าให้เปลี่ยนเส้นทางไปยังที่เก็บข้อมูลแรกโดยใช้ HTTP เป็นโปรโตคอล (เราจะเปลี่ยนเป็น HTTPS ในภายหลัง)
ถังของคุณพร้อมที่จะไป!
กำหนดค่าโดเมนด้วย Route53
ดังนั้นเว็บไซต์ของคุณจึงพร้อมใช้งาน แต่สามารถเข้าถึงได้ผ่านจุดสิ้นสุดที่ฝากข้อมูลเท่านั้น ไม่ใช่โดเมนที่คุณกำหนดเอง มาเปลี่ยนสิ่งนั้นกันเถอะ
มุ่งหน้าสู่
**Route53 หากคุณได้จดทะเบียนโดเมนของคุณกับ Amazon Registrar คุณจะเห็นว่ามีการตั้งค่าโซนโฮสต์ให้กับคุณด้วยชุดบันทึกสองชุด หนึ่งรายการสำหรับ Name Server (NS) และอีกรายการหนึ่งสำหรับ SOA
สิ่งที่เราต้องทำคือสร้างชุดบันทึกอีกสองชุดเพื่อชี้ไปที่ตำแหน่งข้อมูลบัคเก็ต S3
สำหรับแต่ละชุดระเบียน:
âÃÂàประเภท: ที่อยู่ IPv4
âÃÂàนามแฝง: ใช่
âÃÂàAlias Target: จุดสิ้นสุดของเว็บไซต์ S3 ที่ตรงกับสิ่งที่คุณตั้งไว้สำหรับชื่อ
ตอนนี้เราสามารถไปที่ urlà¢ÃÂæ ที่กำหนดเอง และ voilÃÂà!
เราเกือบจะถึงแล้ว แต่มีสิ่งสุดท้ายที่เราขาดหายไปââÃÂàÃÂæ
**หมายเหตุ หากโดเมนของคุณจดทะเบียนกับผู้รับจดทะเบียนโดเมนรายอื่น (ไม่ใช่ Amazon) คุณจะต้องทำตามขั้นตอนต่างๆ เพื่อตั้งค่านี้ โดยปกติแล้ว คุณจะต้องเพิ่มระเบียน CNAME ด้วยค่าของจุดสิ้นสุดบัคเก็ต S3 หลัก **การแก้ไขปัญหา
หากคุณลบโซนโฮสต์ที่ Amazon สร้างขึ้นเมื่อคุณลงทะเบียนโดเมนครั้งแรก (ฉันทำสิ่งนี้ไปแล้วเนื่องจากโซนโฮสต์มีค่าใช้จ่าย) คุณจะ จะต้องสร้างโซนที่โฮสต์ใหม่ตั้งแต่เริ่มต้น
- เลือก âÃÂÃÂCreate Hosted ZoneâÃÂàและตั้งชื่อโดเมน เช่น âÃÂÃÂmywebsite comâÃÂÃÂ
- สิ่งนี้จะสร้างชุดบันทึกใหม่สำหรับประเภท NS และ SOA
- ไปที่โดเมนที่จดทะเบียนแล้วและอัปเดตค่า Name Servers เป็นค่าที่สร้างขึ้นในชุดระเบียน NS ใหม่
การขอหนังสือรับรอง
เยี่ยมมาก ไซต์นี้โฮสต์โดยใช้ URL ที่กำหนดเองแล้ว! อย่างไรก็ตาม เราสามารถเข้าถึงได้ผ่านโปรโตคอล HTTP เท่านั้น
เราควรตรวจสอบให้แน่ใจเสมอว่าไซต์ของเราปลอดภัยโดยใช้โปรโตคอล HTTPS สิ่งนี้ช่วยปกป้องไซต์และผู้ใช้ของเราจากการโจมตีด้วยการฉีดที่เป็นอันตรายและรับประกันความถูกต้อง
มุ่งหน้าสู่
**Certificate Manager** ใน AWS Console และขอใบรับรองสาธารณะใหม่ (ฟรี) คุณจะได้รับแจ้งให้ป้อนชื่อโดเมนที่คุณต้องการรักษาความปลอดภัย
ก่อนที่จะออกใบรับรองได้ Amazon จะต้องสามารถยืนยันได้ว่าคุณเป็นเจ้าของโดเมนที่ระบุ
คุณสามารถเลือกวิธีการยืนยันได้สองวิธี: อีเมลหรือ DNS
โดยทั่วไปอีเมลจะง่ายกว่า แต่คุณจะต้องแน่ใจว่าคุณสามารถเข้าถึงอีเมลที่ใช้ในการจดทะเบียนโดเมนได้ หรือหากคุณใช้ Amazon Registrar และ Route53 คุณสามารถเลือกวิธี DNS ได้ สิ่งนี้ต้องการให้คุณเพิ่มชุดระเบียนเฉพาะบางชุดลงในโซนที่โฮสต์ แต่ส่วนใหญ่จะเป็นแบบอัตโนมัติสำหรับคุณ ดังนั้นจึงค่อนข้างง่าย
อาจใช้เวลาสักครู่ในการออกใบรับรองหลังจากการตรวจสอบความถูกต้อง
เมื่อเสร็จแล้วเราก็ไปต่อที่ขั้นตอนสุดท้ายได้เลย!
การกำหนดค่า CloudFront
สำหรับขั้นตอนสุดท้ายที่เราจะใช้
**CloudFront **ซึ่งทำให้เราใช้ใบรับรอง SSL ใหม่เพื่อให้บริการเว็บไซต์ด้วย HTTPS CloudFront ยังเพิ่มความเร็วในการเผยแพร่เนื้อหาเว็บด้วยการจัดเก็บไว้ในตำแหน่งขอบหลายตำแหน่งและส่งมอบจากตำแหน่งขอบที่ใกล้ที่สุดไปยังผู้ใช้
พวกเราต้องการ
**การกระจายเว็บใหม่สองรายการสำหรับแต่ละบัคเก็ต S3 ไปที่ CloudFront ในคอนโซล AWS และสร้างการกระจายเว็บครั้งแรก
มีการตั้งค่ามากมายสำหรับสร้างการกระจายเว็บ แต่สำหรับพื้นฐาน เราจำเป็นต้องเปลี่ยนเพียงห้าอย่างเท่านั้น:
ชื่อโดเมนต้นทาง: ตั้งค่านี้เป็นจุดสิ้นสุดของเว็บไซต์ S3 สำหรับหนึ่งในบัคเก็ต ข้อสำคัญ: ฟิลด์นี้จะให้ตัวเลือกเติมข้อความอัตโนมัติพร้อมชื่อบัคเก็ต S3 ของคุณ อย่างไรก็ตาม การใช้สิ่งเหล่านี้อาจทำให้เกิดปัญหาในการเปลี่ยนเส้นทางไปยังปลายทางที่ฝากข้อมูล ดังนั้นให้ใช้จุดสิ้นสุดที่ฝากข้อมูลโดยตรงแทน รหัสต้นทาง: รหัสนี้จะเติมให้คุณเมื่อคุณป้อนชื่อโดเมนต้นทาง นโยบายโปรโตคอลของผู้ดู: ตั้งค่าเป็น âÃÂÃÂRedirect HTTP เป็น HTTPSâÃÂàชื่อโดเมนสำรอง: ชื่อนี้ควรตรงกับชื่อของบัคเก็ต S3 ที่คุณชี้ไป ตัวอย่างเช่น âÃÂÃÂmywebsite.comâÃÂàSSL Certificate: เลือก âÃÂÃÂCustom SSL CertificateâÃÂàและเลือกใบรับรองใหม่ของคุณจากดร็อปดาวน์
ทำสิ่งนี้อีกครั้งสำหรับบัคเก็ต S3 ที่สอง
การกระจายอาจใช้เวลาสักครู่ในการหมุน ดังนั้นในขณะที่เรารอ ปล่อยให้ทำขั้นตอนสุดท้าย
ย้อนกลับไปใน
**S3 ไปที่บัคเก็ตสำรองของคุณ (www.mywebsite.com) ในแท็บคุณสมบัติและภายใต้ Static Website Hosting ให้ตั้งค่าโปรโตคอลการเปลี่ยนเส้นทางเป็น HTTPS
สุดท้ายกลับไปที่
**Route53 เราจำเป็นต้องอัปเดตระเบียน A แบบกำหนดเองที่เราสร้างขึ้นเพื่อกำหนดเป้าหมายการกระจาย CloudFront แทนที่จะเป็นบัคเก็ต S3 สำหรับแต่ละเรกคอร์ด ให้เปลี่ยน Alias Target และเลือกการแจกจ่าย CloudFront ที่มีอยู่ในดร็อปดาวน์
หมายเหตุ: อีกครั้ง หากคุณใช้บริการ DNS อื่น คุณต้องอัปเดตระเบียน CNAME จากที่นั่นเพื่อชี้ไปที่ชื่อโดเมน CloudFront
และคุณมีมัน! เว็บไซต์ที่สวยงามของคุณพร้อมใช้งานแล้วในโดเมนที่กำหนดเองและให้บริการด้วย HTTPS!
ขอบคุณที่อ่าน! ฉันหวังว่าคู่มือนี้มีประโยชน์และสนุกสนาน ฉันอยากทราบว่าคุณพบว่ามีประโยชน์หรือไม่