วิธีการตั้งค่า Reverse Proxy (ทีละขั้นตอนสำหรับ Nginx และ Apache)
เผยแพร่แล้ว: 2020-08-14พร็อกซีย้อนกลับตั้งอยู่ด้านหน้าของเว็บเซิร์ฟเวอร์และรับคำขอทั้งหมดก่อนที่จะไปถึงเซิร์ฟเวอร์ต้นทาง มันทำงานคล้ายกับ forward proxy ยกเว้นในกรณีนี้ มันคือเว็บเซิร์ฟเวอร์ที่ใช้พรอกซีแทนที่จะเป็นผู้ใช้หรือไคลเอนต์ โดยทั่วไปแล้ว Reverse proxy จะใช้เพื่อเพิ่มประสิทธิภาพ ความปลอดภัย และความน่าเชื่อถือของเว็บเซิร์ฟเวอร์
ตัวอย่างเช่น คุณสามารถมีไซต์ที่ไม่ใช่ WordPress โฮสต์ที่โดเมน example.com
บนเซิร์ฟเวอร์ A และให้บล็อกทำงานบน WordPress ที่ example.com/blog
URL ที่โฮสต์บนเซิร์ฟเวอร์ B คุณสามารถทำได้โดยเพิ่มพร็อกซีย้อนกลับสำหรับ เซิร์ฟเวอร์ที่โฮสต์เว็บไซต์หลักของคุณ คุณสามารถกำหนดค่าพร็อกซีย้อนกลับเพื่อเปลี่ยนเส้นทางคำขอไปยังบล็อกไปยังเซิร์ฟเวอร์อื่น (เช่น โฮสต์ WordPress ที่มีการจัดการ เช่น Kinsta)
ในบทความนี้ คุณจะได้เรียนรู้พื้นฐานของ reverse proxy servers วิธีทำงาน ประโยชน์หลักๆ และวิธีที่คุณสามารถใช้เพื่อเพิ่มความเร็วและรักษาความปลอดภัยให้กับไซต์ WordPress ของคุณ
ตื่นเต้น? เริ่มกันเลย!
Reverse Proxy คืออะไร?
เพื่อทำความเข้าใจว่า reverse proxy server คืออะไร คุณจำเป็นต้องรู้หน้าที่ของเซิร์ฟเวอร์เสียก่อนและทำความคุ้นเคยกับคำศัพท์ที่เกี่ยวข้องทั้งหมดก่อน
เมื่อคุณเรียกดูเว็บตามปกติโดยป้อนชื่อโดเมนหรือคลิกลิงก์ เบราว์เซอร์/อุปกรณ์ของคุณจะเชื่อมต่อกับเซิร์ฟเวอร์ของเว็บไซต์โดยตรงและเริ่มดาวน์โหลดทรัพยากรของเว็บไซต์

หากคุณต้องการปิดบังที่อยู่ IP ของคุณจากเว็บไซต์ที่คุณเยี่ยมชม คุณสามารถใช้พร็อกซีเซิร์ฟเวอร์เพื่อส่งคำขอทั้งหมดของคุณไปที่เว็บไซต์นั้นก่อน มันจะส่งต่อคำขอของคุณไปยังตัวแก้ไข DNS จากนั้นดาวน์โหลดทรัพยากรของเว็บไซต์จากเซิร์ฟเวอร์ต้นทาง
หลังจากนั้น มันจะส่งต่อทรัพยากรเหล่านั้นไปยังอุปกรณ์ของคุณ สิ่งนี้เรียกว่าพร็อกซีการส่งต่อ

คุณถูกซ่อนอย่างสมบูรณ์จากเว็บไซต์ เนื่องจากคิดว่าคำขอของคุณมาจากพร็อกซีการส่งต่อ
นอกเหนือจากการเพิ่มความเป็นส่วนตัวของผู้ใช้แล้ว พร็อกซีการส่งต่อยังถูกใช้เพื่อเลี่ยงข้อจำกัดของเนื้อหาทางภูมิศาสตร์เป็นหลัก ตัวอย่างเช่น หากคุณต้องการดูวิดีโอที่ถูกบล็อกในภูมิภาคของคุณ คุณสามารถใช้พร็อกซีการส่งต่อที่มีที่อยู่ IP ที่วิดีโอนั้นสามารถดูได้
พร็อกซีการส่งต่อทำงานเกือบจะเหมือนกับ Virtual Private Network (VPN) แต่เป็นเทคโนโลยีที่แตกต่างกันโดยมีกรณีการใช้งานที่ไม่ซ้ำกัน (บางครั้งอาจทับซ้อนกันได้)
Reverse Proxy Server กับ Forward Proxy Server
พร็อกซีเซิร์ฟเวอร์ย้อนกลับทำหน้าที่เป็นส่วนหน้าสำหรับเซิร์ฟเวอร์ต้นทางเพื่อรักษาความเป็นนิรนามและเพิ่มความปลอดภัย เช่นเดียวกับที่ผู้ใช้/ไคลเอ็นต์สามารถใช้พร็อกซีการส่งต่อเพื่อให้เกิดผลเช่นเดียวกัน ทำให้แน่ใจว่าไม่มีผู้ใช้หรือไคลเอนต์ใดสื่อสารโดยตรงกับเซิร์ฟเวอร์ต้นทาง

ความแตกต่างระหว่าง forward proxy กับ reverse proxy นั้นเล็กน้อย แต่ทำงานต่างกัน
ทั้งสองสามารถทำงานร่วมกันได้เนื่องจากไม่มีการทับซ้อนกันระหว่างการทำงาน โดยปกติ ผู้ใช้/ไคลเอนต์ใช้พร็อกซีการส่งต่อ ในขณะที่เซิร์ฟเวอร์ต้นทางใช้พร็อกซีย้อนกลับ

เนื่องจากผู้ดูแลเซิร์ฟเวอร์สามารถควบคุมวิธีการทำงานของพร็อกซีย้อนกลับ คุณจึงสามารถใช้พร็อกซีนี้เพื่อเปิดใช้งานคุณสมบัติที่มีประโยชน์มากมายได้
เราจะแสดงรายการประโยชน์ทั้งหมดในภายหลังในโพสต์นี้
ทำไมต้องใช้ Reverse Proxy?
ธุรกิจจำนวนมาก โดยเฉพาะอย่างยิ่งองค์กรขนาดใหญ่ ใช้เว็บไซต์ที่จัดทำขึ้นตามความต้องการเฉพาะของตนและไม่ได้ใช้งานบน WordPress ตัวอย่างบางส่วน ได้แก่ เว็บไซต์ธนาคารและประกันภัย
ในกรณีอื่นๆ ธุรกิจอาจโฮสต์ไซต์ของตนบนบริการภายนอกที่ไม่อนุญาตให้ติดตั้งซอฟต์แวร์ภายนอกใดๆ (เช่น WordPress) โดยปกติ ผู้ค้าปลีกเหล่านี้จะเป็นร้านค้าปลีกขนาดเล็กถึงขนาดกลางที่ใช้แพลตฟอร์มอีคอมเมิร์ซ เช่น Shopify
เนื่องจาก WordPress มีคุณสมบัติ CMS ที่แข็งแกร่ง ธุรกิจจำนวนมาก รวมถึงองค์กรขนาดใหญ่ที่มีเว็บไซต์ตามความต้องการ จึงอาจต้องการโฮสต์บล็อกของตนโดยใช้ WordPress
วิธีหนึ่งในการแก้ไขปัญหานี้คือการติดตั้ง WordPress บนโดเมนย่อยของเว็บไซต์หลัก และจัดโครงสร้างเมนูการนำทาง เพื่อให้ผู้ใช้สามารถสลับไปมาระหว่างเว็บไซต์หลักและบล็อกได้อย่างง่ายดาย
เนื่องจากโดเมนย่อยมีลักษณะเป็นโดเมนที่ไม่ซ้ำ จึงอาจส่งผลต่อ SEO ของเว็บไซต์ของคุณ แม้ว่า Google จะปฏิบัติต่อทั้งโดเมนย่อยและไดเรกทอรีย่อยอย่างเท่าเทียมกัน แต่ก็ต้องใช้ความพยายามมากขึ้นในการเพิ่มประสิทธิภาพเว็บไซต์สำหรับการจัดอันดับของเครื่องมือค้นหา หากโฮสต์อยู่ในโดเมนย่อยมากกว่าการโฮสต์ในไดเรกทอรีย่อย

Google ได้ยืนยันอีกครั้งว่าจะปฏิบัติต่อทั้งโดเมนย่อยและไดเรกทอรีย่อยอย่างเท่าเทียมกัน แต่ผู้เชี่ยวชาญด้าน SEO บางคนไม่เห็นด้วยกับเรื่องนี้ และถึงแม้ว่าจะไม่ส่งผลต่อ SEO ของไซต์ แต่ไซต์ที่โฮสต์ในไดเร็กทอรีย่อยนั้นง่ายต่อการดูแล
นั่นเป็นเหตุผลที่คุณสามารถใช้ reverse proxy เพื่อเปลี่ยนเส้นทางคำขอไปยังบล็อกของไซต์ที่โฮสต์บนเซิร์ฟเวอร์แยกต่างหาก ตัวอย่างเช่น ธนาคารสามารถโฮสต์เว็บไซต์หลักของตนบนเซิร์ฟเวอร์ได้อย่างปลอดภัย แต่ยังสามารถโฮสต์บล็อกที่ขับเคลื่อนด้วย WordPress แยกต่างหากบนโฮสต์ WordPress ที่มีการจัดการเช่น Kinsta

การรวมสองไซต์ที่แตกต่างกันภายใต้ชื่อโดเมนเดียวเป็นหนึ่งในข้อดีหลักของการใช้พร็อกซีย้อนกลับ ช่วยให้แบรนด์ต่างๆ จัดระเบียบเว็บไซต์ของตน เป็นมืออาชีพ และรักษาความน่าเชื่อถือ
ประโยชน์ของการใช้ Reverse Proxy
นอกจากกรณีการใช้งานข้างต้นแล้ว reverse proxy ยังให้ประโยชน์อื่นๆ อีกมากมาย ส่วนด้านล่างกล่าวถึงข้อดีที่สำคัญบางประการ
โหลดบาลานซ์
เซิร์ฟเวอร์ต้นทางเดียวไม่สามารถจัดการการรับส่งข้อมูลขาเข้าทั้งหมดสำหรับเว็บไซต์ที่มีผู้เยี่ยมชมที่ไม่ซ้ำกันหลายล้านคนต่อวัน ในกรณีเหล่านี้ คุณสามารถกระจายการรับส่งข้อมูลอย่างชาญฉลาดระหว่างกลุ่มของเซิร์ฟเวอร์จำนวนมาก โดยปกติ เซิร์ฟเวอร์ทั้งหมดจะโฮสต์เนื้อหาเดียวกันเพื่อกำจัดจุดล้มเหลวเพียงจุดเดียว ทำให้เว็บไซต์มีความน่าเชื่อถือมากขึ้น
reverse proxy เป็นวิธีที่ยอดเยี่ยมในการตั้งค่า เนื่องจากสามารถรับทราฟฟิกที่เข้ามาก่อนที่จะถึงเซิร์ฟเวอร์ต้นทาง หากเซิร์ฟเวอร์ต้นทางทำงานหนักเกินไปหรือล้มเหลวโดยสิ้นเชิง ก็สามารถกระจายการรับส่งข้อมูลไปยังเซิร์ฟเวอร์อื่นได้โดยไม่กระทบต่อการทำงานของไซต์
Reverse Proxies สามารถส่งคำขอขาเข้าไปยังเซิร์ฟเวอร์หลาย ๆ ตัวโดยแต่ละเซิร์ฟเวอร์ทำหน้าที่เฉพาะที่ได้รับการปรับให้เหมาะสม พร็อกซีย้อนกลับสามารถรวบรวมการตอบสนองจากเซิร์ฟเวอร์ทั้งหมดและส่งไปยังไคลเอนต์
เนื่องจากเราใช้ reverse proxies ยอดนิยมส่วนใหญ่สำหรับการทำ load balancing จึงเรียกอีกอย่างว่า Load Balancer
เซิร์ฟเวอร์โกลบอลโหลดบาลานซ์ (GSLB)
GSLB เป็นวิธีการจัดสรรภาระงานขั้นสูงสำหรับการกระจายการเข้าชมเว็บไซต์ระหว่างเซิร์ฟเวอร์จำนวนมากที่วางกลยุทธ์ไว้ทั่วโลก โดยทั่วไปแล้วจะทำโดยใช้เทคนิคการกำหนดเส้นทางแบบใดแบบหนึ่ง โดยที่พร็อกซีย้อนกลับจะเลือกโหนดของเซิร์ฟเวอร์โดยพิจารณาจากเวลาเดินทางที่เร็วที่สุดระหว่างไคลเอ็นต์และเซิร์ฟเวอร์
GSLB ไม่เพียงแต่เพิ่มความน่าเชื่อถือและความปลอดภัยของเว็บไซต์ได้มากเท่านั้น แต่ยังช่วยลดเวลาแฝงและเวลาในการโหลด ซึ่งจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ คุณสามารถใช้ GSLB กับเทคนิคการเพิ่มประสิทธิภาพเครือข่ายอื่นๆ เช่น Spoon Feeding เพื่อเพิ่มทรัพยากรการคำนวณของเซิร์ฟเวอร์ต้นทางให้มากขึ้น
แม้ว่าคุณจะสามารถตั้งค่า Global Server Load Balancing ได้ด้วยตนเองบนเซิร์ฟเวอร์ของคุณ แต่โดยปกติแล้ว CDN เฉพาะจะดูแลโดย Cloudflare และ KeyCDN (ซึ่งสนับสนุน Kinsta CDN ด้วย) Kinsta ให้บริการเว็บไซต์ทั้งหมดที่โฮสต์ด้วย Load Balancer ที่ขับเคลื่อนโดย Google Cloud Platform
ความปลอดภัยขั้นสูง
พร็อกซีย้อนกลับสามารถปิดบังที่อยู่ IP และคุณลักษณะอื่นๆ ของเซิร์ฟเวอร์ต้นทางได้ ดังนั้น เซิร์ฟเวอร์ต้นทางของเว็บไซต์ของคุณจึงสามารถรักษาความเป็นนิรนามได้ดีขึ้น และเพิ่มความปลอดภัยอย่างมาก
เนื่องจาก reverse proxy จะได้รับทราฟฟิกทั้งหมดก่อนที่จะถึงเซิร์ฟเวอร์หลัก ผู้โจมตีหรือแฮกเกอร์จะพบว่าการกำหนดเป้าหมายเว็บไซต์ของคุณด้วยภัยคุกคามความปลอดภัย เช่น การโจมตี DDoS นั้นยากขึ้น
คุณสามารถใช้ไฟร์วอลล์ที่เข้มงวดเพื่อเสริมความแข็งแกร่งให้กับพร็อกซีย้อนกลับด้วยการรักษาความปลอดภัยที่เข้มงวดยิ่งขึ้นจากการโจมตีทางไซเบอร์ทั่วไป หากไม่มีการติดตั้งพร็อกซีย้อนกลับ การลบมัลแวร์หรือเริ่มการลบออกเป็นเรื่องยาก
พร็อกซีย้อนกลับ เช่น HAProxy สามารถเพิ่มการตรวจสอบสิทธิ์การเข้าถึง HTTP พื้นฐานไปยังเว็บเซิร์ฟเวอร์ที่ไม่ได้เปิดใช้งาน คุณยังสามารถใช้ reverse proxy เพื่อเพิ่มการพิสูจน์ตัวตนแบบรวมศูนย์สำหรับคำขอประเภทต่างๆ
แคชที่มีประสิทธิภาพ
คุณสามารถใช้ reverse proxy เพื่อการเร่งความเร็วของเว็บได้โดยการแคชเนื้อหาทั้งแบบสแตติกและไดนามิก ซึ่งสามารถลดภาระงานบนเซิร์ฟเวอร์ต้นทาง ส่งผลให้เว็บไซต์เร็วขึ้น
ตัวอย่างเช่น หากเซิร์ฟเวอร์ต้นทางของคุณอยู่ในสหรัฐอเมริกา และผู้ใช้จากยุโรปเข้าชมเว็บไซต์ของคุณ คุณจะให้บริการเวอร์ชันแคชของเว็บไซต์ได้จากเซิร์ฟเวอร์พร็อกซีย้อนกลับในยุโรป เนื่องจาก reverse proxy อยู่ใกล้กับผู้ใช้มากกว่าเซิร์ฟเวอร์ต้นทาง เว็บไซต์จึงใช้เวลาโหลดน้อยลง ทำให้ดำเนินการได้อย่างยอดเยี่ยม
Varnish และ Nginx FastCGI เป็นตัวอย่างที่โดดเด่นของ reverse proxy ที่ใช้สำหรับการแคชเนื้อหาเว็บ หากเว็บไซต์ของคุณโฮสต์กับ Kinsta คุณไม่ต้องกังวลกับการแคชเนื่องจาก Kinsta จะดูแลงานด้านการแคชทั้งหมดให้คุณ
การบีบอัดที่เหนือกว่า
การตอบสนองของเซิร์ฟเวอร์ใช้แบนด์วิดท์มาก การบีบอัดการตอบสนองของเซิร์ฟเวอร์ (เช่น กับ gzip) ก่อนส่งไปยังไคลเอ็นต์ สามารถลดจำนวนแบนด์วิดท์ที่ต้องการได้ ซึ่งจะช่วยเร่งความเร็วการตอบสนองของเซิร์ฟเวอร์ผ่านเครือข่าย
พร็อกซีย้อนกลับเหมาะอย่างยิ่งในการบีบอัดการตอบสนองของเซิร์ฟเวอร์เนื่องจากอยู่ระหว่างเซิร์ฟเวอร์ต้นทางและไคลเอ็นต์
การเข้ารหัส SSL ที่ปรับให้เหมาะสม
การเข้ารหัสและถอดรหัสคำขอ SSL/TLS สำหรับลูกค้าแต่ละรายอาจต้องเสียภาษีอย่างมากสำหรับเซิร์ฟเวอร์ต้นทาง พร็อกซีย้อนกลับสามารถทำงานนี้เพื่อเพิ่มทรัพยากรของเซิร์ฟเวอร์ต้นทางสำหรับงานที่สำคัญอื่นๆ เช่น การให้บริการเนื้อหา
ข้อดีอีกประการของการลดการเข้ารหัสและการถอดรหัส SSL/TSL คือการลดเวลาแฝงสำหรับไคลเอ็นต์ที่อยู่ห่างไกลจากเซิร์ฟเวอร์ต้นทางทางภูมิศาสตร์
คุณยังสามารถเลือกใช้พร็อกซีย้อนกลับด้วยฮาร์ดแวร์เร่งความเร็ว SSL/TLS เฉพาะเพื่อเพิ่มประสิทธิภาพงานนี้ให้ดียิ่งขึ้น พร็อกซีย้อนกลับดังกล่าวเรียกว่าพร็อกซีการยุติ SSL/TLS เซิร์ฟเวอร์บางเซิร์ฟเวอร์ เช่น Varnish ไม่รองรับโปรโตคอล SSL/TSL ดังนั้น reverse proxy การยกเลิก SSL/TSL สามารถช่วยรักษาความปลอดภัยของการรับส่งข้อมูลที่ส่งผ่าน
การทดสอบ A/B ที่ดีขึ้น
เครื่องมือทดสอบ A/B ส่วนใหญ่ต้องการให้คุณใช้ไลบรารี JavaScript ภายนอกเพื่อโหลดฟังก์ชัน อย่างไรก็ตาม การโหลดสคริปต์ของบุคคลที่สามอาจทำให้เวลาในการโหลดหน้าเว็บของคุณช้าลง และสร้างประสบการณ์ที่ไม่แน่นอนให้กับผู้ใช้
คุณสามารถใช้ reverse proxy เพื่อสร้างโฟลว์แยกกันสองโฟลว์ที่ระดับเซิร์ฟเวอร์เอง ตัวอย่างเช่น คุณสามารถใช้ split_clients
ของ Nginx หรือวิธี sticky route
เพื่อควบคุมการเปลี่ยนเส้นทางการรับส่งข้อมูล
คุณสามารถดูบทช่วยสอนเกี่ยวกับ Nginx และ freeCodeCamp เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการทดสอบ A/B ด้วย reverse proxy
การตรวจสอบและการบันทึกการจราจร
พร็อกซีย้อนกลับจะรวบรวมคำขอใด ๆ ที่ผ่าน ดังนั้น คุณสามารถใช้มันเป็นศูนย์กลางในการตรวจสอบและบันทึกการจราจร แม้ว่าคุณจะใช้เว็บเซิร์ฟเวอร์หลายเครื่องเพื่อโฮสต์ส่วนประกอบทั้งหมดของเว็บไซต์ของคุณ การใช้พร็อกซีย้อนกลับจะช่วยให้ตรวจสอบข้อมูลขาเข้าและขาออกทั้งหมดจากไซต์ของคุณได้ง่ายขึ้น
พร็อกซีย้อนกลับที่นิยมมากที่สุด
ตาม W3Techs เกือบ 83% ของเว็บไซต์ไม่ใช้บริการพร็อกซีย้อนกลับที่พวกเขาตรวจสอบ

จาก 17% เว็บไซต์ที่ใช้ reverse proxy (รายการด้านบน) คุณจะสังเกตเห็นว่าส่วนใหญ่เป็น CDN นั่นเป็นเพราะว่าผู้รับมอบฉันทะแบบย้อนกลับส่วนใหญ่จะซ่อนการมีอยู่โดยปริยายเพื่อเป็นการป้องกันไว้ก่อน ดังนั้น คุณจึงไม่สามารถพึ่งพาบริการตรวจสอบเว็บไซต์เช่น W3Techs เพื่อค้นหาพร็อกซีแบบย้อนกลับที่ได้รับความนิยมมากที่สุด
จากการวิจัยและประสบการณ์ของเรา reverse proxy ที่นิยมใช้กันมากที่สุดในปัจจุบันคือ:
Nginx
Nginx เป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์สที่สามารถใช้เป็นพร็อกซีย้อนกลับได้ นอกเหนือจากการใช้โฮสต์เว็บไซต์แล้ว ยังเป็นหนึ่งใน reverse proxy และ load balancing solution ที่ใช้กันอย่างแพร่หลายมากที่สุด ตาม Netcraft เว็บเซิร์ฟเวอร์มากกว่า 479 ล้าน เครื่องกำลังใช้ Nginx ในเดือนธันวาคม 2019 ทำให้เป็นผู้นำในส่วนแบ่งการตลาดเว็บเซิร์ฟเวอร์

Nginx มอบสิทธิประโยชน์ reverse proxy ทั้งหมดที่กล่าวถึงข้างต้น และอีกมากมาย ปรับปรุงประสิทธิภาพของเว็บ ความปลอดภัย ความน่าเชื่อถือ และความสามารถในการปรับขนาด คุณสามารถกำหนดค่า Nginx โดยใช้ไฟล์กำหนดค่า ซึ่งสามารถโหลดซ้ำได้แบบ hot ที่ Kinsta นั้น Nginx reverse proxy เป็นหนึ่งในโปรแกรมเสริมระดับพรีเมียมที่คุณสามารถใช้ได้
แต่คุณยังสามารถใช้ Nginx Plus ซึ่งเป็นข้อเสนอเชิงพาณิชย์ เพื่อเข้าถึงตัวเลือกการกำหนดค่าตาม API และคุณสมบัติอื่นๆ ที่เหมาะสำหรับเว็บไซต์องค์กรขนาดใหญ่
Kinsta ขับเคลื่อนเว็บไซต์ทั้งหมดด้วย Nginx ได้รับการจัดอันดับให้อยู่ในสถานะการโฮสต์เว็บระดับบนสุดของ Review Signal ในทุกหมวดหมู่ที่มีการแข่งขัน บริษัทใหญ่อื่นๆ บางแห่งที่ใช้ Nginx ได้แก่ MaxCDN, Cloudflare และ Netflix
การตั้งค่า Nginx เป็น reverse proxy พื้นฐานนั้นง่ายมาก Nginx ยังให้คำสั่งต่างๆ แก่คุณเพื่อปรับแต่ง reverse proxy ของเซิร์ฟเวอร์ของคุณตามความต้องการของคุณ เราจะพูดถึงวิธีการดำเนินการนี้ในหัวข้อต่อไป หากคุณเป็นลูกค้า Kinsta คุณจะได้เรียนรู้วิธีใช้ reverse proxy สำหรับเว็บไซต์ที่โฮสต์กับ Kinsta ในส่วนเดียวกัน
วานิช
วานิชเป็นโอเพ่นซอร์ส HTTP reverse proxy พร้อมแคชเอ็นจิ้นในตัว ได้รับการออกแบบมาสำหรับเว็บไซต์ที่มีการเข้าชมสูงซึ่งให้บริการเนื้อหาแบบไดนามิกเป็นหลัก คุณยังสามารถใช้วานิชเป็นโหลดบาลานเซอร์ ไฟร์วอลล์เว็บแอป (WAF) และเซิร์ฟเวอร์การตรวจสอบสิทธิ์และการอนุญาตของขอบ
ใช้งานได้กับ Linux และ FreeBSD เวอร์ชันใหม่ทั้งหมด โดยส่วนใหญ่จะใช้เป็นส่วนหน้าสำหรับเว็บเซิร์ฟเวอร์ Nginx หรือ Apache Varnish Configuration Language (VCL) ที่ทรงพลังและยืดหยุ่นสูงของ Varnish ช่วยให้คุณกำหนดคุณสมบัติต่างๆ เช่น การจัดการคำขอ HTTP การแคช และการเชื่อมต่อกับเว็บเซิร์ฟเวอร์ตั้งแต่หนึ่งเครื่องขึ้นไป
ด้วยเหตุนี้ CDN จำนวนมากจึงใช้วานิชเป็นพื้นฐานหลักในการนำเสนอเนื้อหาอย่างรวดเร็ว
วานิชยังสนับสนุนขอบด้านรวม (ESI) ซึ่งเป็นภาษาที่ช่วยให้คุณนำส่วนของหน้าเว็บหนึ่งไปใช้ใหม่ในหน้าเว็บอื่นๆ หากเว็บไซต์ของคุณใช้เนื้อหาที่ซ้ำกันจำนวนมากในหน้าต่างๆ ESI สามารถช่วยเร่งความเร็วในการโหลดหน้าของเว็บไซต์ได้โดยการแคชส่วนที่ใช้บ่อย
คุณสามารถขยายวานิชด้วยโมดูลต่างๆ (VMODs) ไปที่บทช่วยสอนอย่างเป็นทางการของ Varnish เพื่อเรียนรู้วิธีตั้งค่า Varnish เป็น reverse proxy สำหรับ WordPress
Apache Traffic Server
Apache Traffic Server เป็นพร็อกซีเซิร์ฟเวอร์แคชโอเพ่นซอร์ส เป็นที่นิยมในด้านคุณลักษณะที่รวดเร็วและปรับขนาดได้ เป็นผลิตภัณฑ์เชิงพาณิชย์ที่พัฒนาโดย Yahoo! นานมาแล้ว แต่พวกเขาทำให้มันเป็นโอเพ่นซอร์สและบริจาคให้กับ Apache Foundation เพื่อการบำรุงรักษา

เครือข่ายเนื้อหาหลักหลายแห่งและ CDN เช่น Comcast, Akamai, LinkedIn, Yahoo และ Apple ใช้ Apache Traffic Server เพื่อขับเคลื่อนเทคโนโลยีของตน
คุณยังสามารถใช้เซิร์ฟเวอร์ Apache HTTP ( Apache httpd ) ซึ่งเป็นภูตเซิร์ฟเวอร์ HTTP เพื่อตั้งค่าพร็อกซีย้อนกลับบนเว็บเซิร์ฟเวอร์ของคุณ นอกจากทำหน้าที่เป็นเว็บเซิร์ฟเวอร์พื้นฐานแล้ว ยังช่วยให้คุณให้บริการเนื้อหาแบบคงที่และแบบไดนามิกแก่ผู้ใช้ คุณจะได้เรียนรู้วิธีตั้งค่า Apache เป็น reverse proxy ในบทความนี้
HAProxy
HAProxy เป็นพร็อกซีย้อนกลับโอเพนซอร์สและตัวโหลดบาลานซ์ ได้รับการออกแบบมาเพื่อผสานรวมกับสถาปัตยกรรมเว็บเซิร์ฟเวอร์ที่มีอยู่ส่วนใหญ่ รวมถึงการแจกจ่าย Linux และแพลตฟอร์มระบบคลาวด์ คล้ายกับ Nginx HAProxy ใช้โมเดล I/O ที่ขับเคลื่อนด้วยเหตุการณ์และรองรับคำขอแยกระหว่างกระบวนการของผู้ปฏิบัติงานหลายราย
สำหรับคำขอ HTTP HAProxy ทำงานได้ดีเป็นพิเศษแม้ภายใต้ภาระหนัก เว็บไซต์ที่มีการเข้าชมสูงสุดบนอินเทอร์เน็ต เช่น Airbnb, Reddit, Instagram, Stack Overflow, Tumblr, GitHub และ Imgur ใช้ HAProxy เพื่อนำเสนอเว็บไซต์ของตนอย่างมีประสิทธิภาพ
การอภิปรายถึงวิธีการใช้ HAProxy นั้นอยู่นอกเหนือขอบเขตของบทความนี้ แต่คุณสามารถดูเอกสารประกอบเพื่อทำความเข้าใจวิธีการทำงาน
หมายเหตุ: Traefik และ Envoy เป็นอีกสองทางเลือกโอเพ่นซอร์สสำหรับ HAProxy เป็นทั้ง reverse proxy และโหลดบาลานเซอร์ที่มีประสิทธิภาพสูงพร้อมคุณสมบัติขั้นสูงมากมาย
พร็อกซีย้อนกลับยอดนิยมอื่นๆ ได้แก่ AWS Elastic Load Balancer, GLBC, DigitalOcean Load Balancer และ Google Cloud Load Balancer หากต้องการทราบรายการ reverse proxy และโหลดบาลานเซอร์ที่ใช้อยู่ในปัจจุบันอย่างละเอียดถี่ถ้วน คุณสามารถดู Stackshare.io ได้
Reverse Proxy: กรณีการใช้งานสำหรับไซต์ WordPress
ส่วนใหญ่มีสามกรณีการใช้งานสำหรับการใช้ reverse proxy สำหรับไซต์ WordPress รวมถึงไซต์ที่โฮสต์ที่ Kinsta

เราจะใช้ Nginx สำหรับตัวอย่างนี้เท่านั้น เนื่องจากเป็น reverse proxy ที่ได้รับความนิยมมากที่สุดสำหรับไซต์ WordPress ในปัจจุบัน แต่หลักการพื้นฐานเดียวกันนี้จะนำไปใช้กับผู้รับมอบฉันทะแบบย้อนกลับอื่นๆ
Reverse proxy มักจะติดตั้ง กำหนดค่า และสนับสนุนได้ยาก ด้วยเหตุนี้ Kinsta จึงเสนอการสมัครสมาชิกเสริมรายเดือน $50 สำหรับแต่ละ reverse proxy ที่คุณต้องการความช่วยเหลือในการตั้งค่า คุณสามารถติดต่อทีมสนับสนุนของ Kinsta เพื่อขอรายละเอียดเพิ่มเติม
1. ไซต์หลักและไซต์พร็อกซีที่โฮสต์บนเซิร์ฟเวอร์เดียวกัน
หากทั้งไซต์หลักและไซต์พร็อกซีโฮสต์อยู่บนเซิร์ฟเวอร์เดียวกัน ไซต์หลักสามารถทำงานบนการติดตั้ง WordPress ได้ ในขณะที่การติดตั้ง WordPress แยกต่างหากจะขับเคลื่อนไซต์ที่พร็อกซี่
เนื่องจากคุณจะสามารถเข้าถึงทั้งไซต์และเว็บเซิร์ฟเวอร์ที่ใช้ร่วมกันได้ คุณสามารถตั้งค่ากฎ reverse proxy สำหรับไซต์หลัก แล้วกำหนดค่าไซต์ proxied ให้โหลดจาก reverse proxy
หากคุณโฮสต์ทั้งสองไซต์นี้ที่ Kinsta คุณสามารถติดต่อทีมสนับสนุนของ Kinsta และขอให้พวกเขาตั้งค่าพร็อกซีย้อนกลับให้คุณ นี่คือขั้นตอนที่คุณต้องปฏิบัติตาม:
- ตรวจสอบให้แน่ใจว่าทั้งไซต์หลักและไซต์พร็อกซีนั้นโฮสต์ที่ Kinsta หากไม่เป็นเช่นนั้น คุณสามารถย้ายทั้งสองไซต์ไปยังสภาพแวดล้อมของ Kinsta ด้วยตนเองหรือโดยการส่งคำขอย้ายข้อมูล
- เปิดตั๋วสนับสนุนและให้คำอธิบายที่ชัดเจนเกี่ยวกับการกำหนดค่าโดเมนแก่ทีมสนับสนุนของ Kinsta ฉันจะใช้เวลาประมาณหนึ่งวันทำการในการตั้งค่าพร็อกซีย้อนกลับ
- Kinsta จะตั้งค่ากฎพร็อกซีย้อนกลับที่เกี่ยวข้องบนไซต์หลักและกำหนดค่าไซต์พร็อกซีให้โหลดผ่านพร็อกซีย้อนกลับ
นี่คือคำสั่งพร็อกซีย้อนกลับ Nginx มาตรฐานที่ใช้โดย Kinsta เพื่อโหลดไซต์ไดเรกทอรีย่อยผ่านพร็อกซีย้อนกลับ:
location ^~ /subfolder/ { proxy_pass http://subfolder.domain.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
ในโค้ดด้านบน คุณต้องแทนที่ /subfolder/
placeholder ด้วยชื่อไดเร็กทอรีย่อยจริง (เช่น /blog/
, /shop/
) นอกจากนี้ โดเมนย่อย http://subfolder.domain.com
ควรตรงกับ URL ที่ใช้เพื่อชี้พร็อกซีย้อนกลับไปยังไซต์ที่มีพร็อกซี
คำสั่ง location
มีสัญลักษณ์คาเร็ตและตัวหนอน ( ^~ ) เพื่อบอก Nginx ว่าหากพบสตริงที่กำหนดไว้ ก็ควรหยุดค้นหารายการที่ตรงกันเพิ่มเติมและใช้คำสั่งที่ระบุไว้ที่นี่ เรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง reverse proxy ของ Nginx ในเอกสารประกอบ
ถัดไป คุณต้องกำหนดค่าไซต์พร็อกซีให้โหลดผ่านพร็อกซีย้อนกลับ นี่คือขั้นตอนมาตรฐานตามด้วย Kinsta เพื่อกำหนดค่าไซต์พร็อกซี:
- สร้างไดเร็กทอรีย่อยที่พาธที่โหลดไซต์พร็อกซี่ ไฟล์ของเว็บไซต์พร็อกซี่ทั้งหมดจะถูกย้ายไปยังไดเร็กทอรีย่อยนี้
- อัพเดตไฟล์คอนฟิกูเรชันของเว็บเซิร์ฟเวอร์เพื่อกำหนดไดเร็กทอรีย่อยใหม่เป็นไดเร็กทอรีรากสำหรับไซต์ที่พร็อกซี่ นอกจากนี้ คุณต้องเพิ่มกฎการเขียนซ้ำเพื่อลบไดเรกทอรีย่อยออกจาก URI คำขอสำหรับคำขอขาเข้าแต่ละรายการ
- อัปเดต URL ทั้งหมดในฐานข้อมูลของไซต์พร็อกซีให้ตรงกับ URL ของไซต์ที่ใช้งานจริง (เช่น
example.com/blog
) - แก้ไข
wp-config.php
ของไซต์พร็อกซีด้วยคำจำกัดความ$_SERVER['HTTP_HOST']
โดยชี้ไปที่ URL ของไซต์หลัก - หากคุณใช้ใบรับรอง SSL คุณจะต้องกำหนดกฎเกณฑ์ที่เข้มงวดใน
wp-config.php
เพื่อหลีกเลี่ยงการเปลี่ยนเส้นทาง
หมายเหตุ: ไซต์พร็อกซีไม่สามารถสร้าง URL ที่ทำซ้ำไดเร็กทอรีย่อยเดียวกันกับที่ไซต์พร็อกซีโหลด ตัวอย่างเช่น ไซต์พร็อกซี่ที่ example.com/blog
ไม่สามารถสร้างเพจหรือไดเร็กทอรีที่ example.com/blog/blog
2. เฉพาะเว็บไซต์ Proxied ที่โฮสต์บนเซิร์ฟเวอร์ของคุณ
หากคุณมีสิทธิ์เข้าถึงเว็บไซต์พร็อกซี่และเว็บเซิร์ฟเวอร์เท่านั้น คุณต้องติดต่อผู้ดูแลระบบเซิร์ฟเวอร์ของเว็บไซต์หลักและขอให้พวกเขาตั้งค่ากฎพร็อกซีย้อนกลับให้คุณ
ต้องการโฮสติ้งที่รวดเร็ว ปลอดภัย และเป็นมิตรกับนักพัฒนาสำหรับเว็บไซต์ของคุณใช่หรือไม่ Kinsta สร้างขึ้นโดยคำนึงถึงนักพัฒนา WordPress และมีเครื่องมือมากมายและแดชบอร์ดที่ทรงพลัง ตรวจสอบแผนของเรา
ในการทำเช่นนั้น คุณต้องทำตามขั้นตอนเดียวกับที่อธิบายไว้ข้างต้น ยกเว้นในกรณีนี้ คุณต้องกำหนดค่ากฎบนเซิร์ฟเวอร์ที่แตกต่างกันสองเซิร์ฟเวอร์
หากต้องการโฮสต์ไซต์พร็อกซีของคุณกับ Kinsta ให้เพิ่มโดเมนไปยังไซต์ซึ่งจะชี้ไปที่พร็อกซีย้อนกลับ โดยปกติ โดเมนย่อยจะเหมาะกับวัตถุประสงค์นี้ (เช่น blog.example.com
) เพื่อโหลดไซต์ที่พร็อกซี่ผ่านลิงก์ไดเรกทอรีย่อย (เช่น example.com/blog
)
หลังจากตั้งค่าไซต์พร็อกซีของคุณบน Kinsta คุณสามารถติดต่อทีมสนับสนุน Kinsta เพื่อกำหนดค่าไซต์พร็อกซีให้โหลดผ่านพร็อกซีย้อนกลับ ในขณะนี้ ทีมสนับสนุนของเราต้องการ IP จริงของเซิร์ฟเวอร์ของคุณเพื่อดำเนินการตั้งค่าให้เสร็จสิ้นในลักษณะที่นับการเข้าชมได้อย่างถูกต้อง หากคุณไม่สามารถให้ IP แบบคงที่ได้เนื่องจากการจำกัด IP แบบไดนามิกจากผู้ให้บริการบางราย (เช่น AWS CloudFront) แผนของคุณจะถูกแปลงเป็นแผนตามแบนด์วิดท์ที่เปรียบเทียบได้แทน
สุดท้าย การตั้งค่าพร็อกซีย้อนกลับบนเซิร์ฟเวอร์ของคุณอยู่นอกขอบเขตของการสนับสนุน Kinsta เนื่องจากผู้ดูแลระบบเซิร์ฟเวอร์เท่านั้นที่สามารถดูแลได้
3. เฉพาะเว็บไซต์หลักที่โฮสต์บนเซิร์ฟเวอร์ของคุณ
หากคุณมีสิทธิ์เข้าถึงเว็บไซต์หลักและเว็บเซิร์ฟเวอร์เท่านั้น คุณควรตั้งค่าพร็อกซีย้อนกลับและกำหนดค่ากฎเพื่อโหลดเว็บไซต์พร็อกซีจากโฮสต์ภายนอก การติดตั้งและกำหนดค่าไซต์พร็อกซีให้โหลดผ่านพร็อกซีย้อนกลับเป็นความรับผิดชอบของผู้ดูแลระบบเซิร์ฟเวอร์รอง
การมีเว็บไซต์หลักของคุณโฮสต์ที่ Kinsta จะทำให้คุณสามารถเข้าถึงทีมสนับสนุนของ Kinsta คุณสามารถเพิ่มตั๋วสนับสนุนกับพวกเขาเพื่อเพิ่มกฎพร็อกซีย้อนกลับมาตรฐานที่แสดงไว้ก่อนหน้าในบทความนี้ คุณยังสามารถเพิ่มการปรับแต่งเพิ่มเติมใดๆ ให้กับกฎเหล่านั้นได้ หากจำเป็น
ในสถานการณ์สมมตินี้ คุณมีหน้าที่รับผิดชอบอย่างเต็มที่ในการกำหนดค่าไซต์พร็อกซีให้โหลดบนพร็อกซีย้อนกลับอย่างเหมาะสม
วิธีตั้งค่า Nginx เป็น Reverse Proxy
หาก Kinsta ไม่ได้โฮสต์เว็บไซต์ของคุณและคุณจัดการเซิร์ฟเวอร์ของคุณ คุณต้องตั้งค่าพร็อกซีย้อนกลับด้วยตัวเองและกำหนดค่าให้ชี้ไปที่ไซต์พร็อกซี
ขึ้นอยู่กับระบบปฏิบัติการของเว็บเซิร์ฟเวอร์ของคุณ คุณสามารถติดตั้ง Nginx ได้ด้วยวิธีอื่น สำหรับการแจกจ่าย Linux คุณสามารถใช้แพ็คเกจ Nginx ต่างๆ ตามเวอร์ชันของการแจกจ่าย Linux ของคุณ
ในตัวอย่างด้านล่าง เราได้ติดตั้งไซต์หลักที่ชื่อโดเมน example.com
ในขณะที่ไซต์ WordPress ที่มีพร็อกซีได้รับการติดตั้งที่โดเมนย่อยของ blog.domain.com
ทั้งคู่ขับเคลื่อนโดย Apache บนเว็บเซิร์ฟเวอร์ที่ทำงานบน Ubuntu 18.04 เราจะติดตั้งและกำหนดค่า Nginx เป็น reverse proxy บนเซิร์ฟเวอร์หลัก
ในการเริ่มต้น ให้เข้าถึงเทอร์มินัลของเซิร์ฟเวอร์ของคุณผ่าน SSH จากนั้นใช้คำสั่ง apt-get
เพื่ออัปเดตรายการแพ็คเกจของการแจกจ่ายและติดตั้ง Nginx บนเว็บเซิร์ฟเวอร์ของคุณ
sudo apt update sudo apt install nginx
ถัดไป คุณต้องกำหนดค่า Nginx เป็นคำขอพร็อกซีสำหรับโดเมนที่โฮสต์บน Apache ในการทำเช่นนั้น ให้สร้างไฟล์โฮสต์เสมือนใหม่ ที่นี่ ฉันใช้ตัวแก้ไข นาโน เพื่อเพิ่มโค้ด แต่คุณสามารถใช้ตัวแก้ไขโค้ดใดก็ได้ตามต้องการ
sudo nano /etc/nginx/sites-available/example.com.conf
จากนั้นตั้งค่าคำสั่ง Nginx เพื่อส่งต่อคำขอไปยัง Apache โดยเพิ่ม server {...}
และบล็อก location
:
server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; # Proxy timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }
ในโค้ดด้านบนนี้ ฉันกำลังกำหนดลิงก์ย่อย example.com/blog
ที่จะให้บริการโดยเซิร์ฟเวอร์ Apache ตรวจสอบให้แน่ใจว่าคุณใช้ที่อยู่ IP สาธารณะ (หรือ URL) ของเว็บไซต์พร็อกซีของคุณในคำสั่ง proxy_pass
ในกรณีของฉัน เว็บไซต์พร็อกซีของฉันโฮสต์บนโดเมนย่อยของ blog.domain.com
หมายเหตุ: ตรวจสอบให้แน่ใจว่าเว็บไซต์พร็อกซีได้รับการติดตั้งและพร้อมที่จะให้บริการก่อนที่คุณจะทำการเปลี่ยนแปลงใดๆ
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง reverse proxy ทั้งหมดที่ใช้ที่นี่ในดัชนีคำสั่งโดยละเอียดของ Nginx
บันทึกไฟล์โฮสต์เสมือน จากนั้นเปิดใช้งานโฮสต์เสมือนใหม่โดยสร้าง symlink สำหรับไฟล์ชื่อ example.com.conf
ทั้งในไดเร็กทอรี /etc/nginx/sites-available
และ /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
หลังจากนั้น ให้ทดสอบ Nginx เพื่อหาข้อผิดพลาดในการกำหนดค่า
sudo nginx -t
หากไม่มีข้อผิดพลาด ให้โหลด Nginx ซ้ำเพื่อบังคับใช้การเปลี่ยนแปลง
sudo systemctl reload nginx
คุณได้ตั้งค่า Nginx ให้ทำงานเป็น reverse proxy เรียบร้อยแล้ว เพื่อยืนยันสิ่งนี้ คุณสามารถใช้ฟังก์ชัน phpinfo() เพื่อตรวจสอบตัวแปร PHP ที่โหลดเมื่อคุณเยี่ยมชมไซต์พร็อกซีของคุณ
ภายใต้ SERVER_SOFTWARE
และ DOCUMENT_ROOT
PHP คุณจะเห็นว่า Apache ให้บริการโดเมนนี้ในแบ็กเอนด์ แต่ HTTP_X_REAL_IP
และ HTTP_X_FORWARDED_FOR
PHP ยืนยันว่า Nginx ถูกใช้เป็นพร็อกซีย้อนกลับเพื่อส่งต่อคำขอ
คุณสามารถเพิ่มความเร็วในการให้บริการไซต์ WordPress ของคุณผ่าน Nginx โดยใช้โมดูล fastcgi_cache และ ngx_cache_purge แม้ว่าโมดูลแรกจะแคชไซต์ของคุณ โมดูลที่สองจะล้างแคชโดยอัตโนมัติตามเหตุการณ์เฉพาะ (เช่น การเผยแพร่หรือแก้ไขบทความ/หน้า WordPress)
คุณสามารถใช้ปลั๊กอิน WordPress ของตัวควบคุมแคช Nginx เพื่อควบคุมแคชพร็อกซีเซิร์ฟเวอร์ของ Nginx ได้โดยตรงจากแดชบอร์ดผู้ดูแลระบบ WordPress ของคุณ หากคุณกำลังใช้การติดตั้ง WordPress Multisite คุณสามารถใช้ปลั๊กอิน Nginx Helper เพื่อทำเช่นเดียวกัน
ดูเอกสารหลักของ Nginx และคู่มือการตั้งค่า Nginx WordPress สำหรับภาพรวมโดยละเอียดเกี่ยวกับวิธีการทำงานกับ Nginx และ WordPress
วิธีตั้งค่า Apache เป็น Reverse Proxy
ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีเว็บไซต์สองเว็บไซต์และทำงานอยู่ที่ example.com
และ blog.domain.com
เว็บไซต์แรกอาจเป็นหรือไม่ใช่เว็บไซต์ WordPress แต่เว็บไซต์ที่สองควรเป็นเว็บไซต์ WordPress เนื่องจากใช้เพื่อโหลดบล็อกของโดเมนรากที่ลิงก์ไดเรกทอรีย่อย example.com/blog
เป็นหลัก
เริ่มกำหนดค่า Apache โดยเปิดเทอร์มินัลของเซิร์ฟเวอร์ของคุณผ่าน SSH และเปิดใช้งานโมดูลพร็อกซีของ Apache
sudo a2enmod proxy proxy_http ssl
การเรียกใช้คำสั่งดังกล่าวน่าจะรีสตาร์ท Apache เพื่อโหลดคำสั่งที่กำหนดใหม่อีกครั้ง
ถัดไป แก้ไขไฟล์โฮสต์เสมือนของเซิร์ฟเวอร์หลักของคุณเพื่อสร้าง reverse proxy นี่คือรหัสที่คุณต้องเพิ่ม:
<VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>
คำสั่ง ProxyPass จะสร้างพร็อกซีย้อนกลับสำหรับเส้นทางที่ระบุ ในขณะที่คำสั่ง ProxyPassReverse จะสกัดกั้นส่วนหัวการตอบสนอง HTTP ที่ส่งผ่านพร็อกซีย้อนกลับนี้ และเขียนใหม่เพื่อให้ตรงกับเซิร์ฟเวอร์ Apache
หลังจากบันทึกไฟล์แล้ว คุณต้องแก้ไข wp-config.php
โดยเพิ่มโค้ดต่อไปนี้ก่อนบรรทัดที่ขอให้คุณหยุดแก้ไข
# ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
สุดท้าย คุณต้องอัปเดตฐานข้อมูลของไซต์ WordPress เพื่อเพิ่มค่าการกำหนดค่าสำหรับลิงก์ไดเรกทอรีย่อย /blog
คุณสามารถทำได้โดยเรียกใช้แบบสอบถาม SQL ต่อไปนี้:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
ตอนนี้คุณควรสามารถไปที่ https://www.example.com/blog
URL และให้ไซต์ WordPress ของคุณโฮสต์ที่ http://blog.domain.com
โดเมนย่อยโหลดได้โดยไม่ต้องเปลี่ยน URL คุณสามารถใช้ WordPress ต่อไปได้ตามปกติในการเรียกดู เขียน แก้ไข และจัดการไซต์ของคุณ
ข้อจำกัดของ Reverse Proxy
- พร็อกซีย้อนกลับก่อให้เกิดความเสี่ยงด้านความปลอดภัยอย่างมาก เนื่องจากสามารถอ่านและเปลี่ยนแปลงการรับส่งข้อมูลทั้งหมดที่ผ่านไปได้ หากคุณกำลังส่งทราฟฟิก HTTPS ผ่านพร็อกซีย้อนกลับ จำเป็นต้องถอดรหัสและเข้ารหัสข้อมูลที่ส่งอีกครั้ง ซึ่งหมายความว่าต้องมีคีย์ส่วนตัวของใบรับรอง SSL/TLS ดังนั้น หากบุคคลที่เป็นอันตรายสามารถประนีประนอม reverse proxy ของคุณ พวกเขาสามารถบันทึกรหัสผ่านและใส่มัลแวร์ลงในเว็บไซต์ของคุณ
- หากคุณหรือผู้ใช้ของคุณไม่สามารถเข้าถึงเซิร์ฟเวอร์หลักของคุณได้โดยตรง การใช้ reverse proxy อาจทำให้เกิดความล้มเหลวได้เพียงจุดเดียว ตัวอย่างเช่น หากคุณใช้ reverse proxy เป็น front เพื่อให้บริการหลายโดเมน การหยุดทำงานอาจทำให้โดเมนทั้งหมดออฟไลน์พร้อมกันได้
- หากคุณใช้ reverse proxy ของบริษัทอื่น (เช่น Cloudflare) แสดงว่าคุณกำลังมอบข้อมูลที่ละเอียดอ่อนของไซต์ของคุณให้กับพวกเขา แม้ว่าพวกเขาจะเชื่อถือได้ คุณไม่สามารถคาดเดาสิ่งที่อาจนำไปสู่
- การกู้คืนข้อมูลสำรองหรือการพุชไซต์การแสดงละครสดบนเว็บไซต์ที่โหลดผ่านพร็อกซีย้อนกลับอาจทำให้ไซต์พร็อกซีหยุดการโหลดอย่างถูกต้อง
การเลือกระหว่าง CDN และ Reverse Proxy
CDN เป็นรูปแบบขั้นสูงของ reverse proxy โดยมีการกำหนดค่าและการบำรุงรักษาส่วนใหญ่ดูแลโดยบุคคลที่สาม พวกเขาสามารถให้ประโยชน์ด้านประสิทธิภาพที่น่าทึ่งแก่ไซต์ WordPress ของคุณโดยใช้ความพยายามเพียงเล็กน้อยจากจุดสิ้นสุดของคุณ
CDN ไม่เพียงแคชเนื้อหาและให้บริการแก่ผู้ใช้อย่างรวดเร็ว แต่ยังช่วยลดภาระงานบนเซิร์ฟเวอร์ต้นทาง ลดค่าใช้จ่ายแบนด์วิดท์ เพิ่มระดับการรักษาความปลอดภัย เพิ่ม SEO ของเว็บไซต์ของคุณ และช่วยให้คุณปรับขนาดเว็บไซต์ของคุณได้ดียิ่งขึ้น
คุณจะสังเกตเห็นว่าสิทธิประโยชน์ส่วนใหญ่ที่ CDN ให้มานั้นเหมือนกับสิทธิประโยชน์ที่ได้รับจาก reverse proxy คุณควรเลือก CDN แทน reverse proxy หรือในทางกลับกัน?
ไม่มีเหตุผลใดที่คุณต้องตกลงกับสิ่งเดียว หากคุณมี reverse proxy ติดตั้งอยู่แล้ว คุณจะยังคงเห็นความเร็วและประสิทธิภาพที่เพิ่มขึ้นจากการใช้ CDN แคชทั้งสองทำงานได้ดี และถ้าคุณมีความต้องการในการจัดการคำขอเฉพาะ (เช่น เนื้อหาแบบไดนามิก อีคอมเมิร์ซ) คุณสามารถกำหนดค่าได้อย่างง่ายดายด้วยส่วนหัวที่กำหนดเองบางตัวที่ส่งผ่านโดย CDN หรือพร็อกซีย้อนกลับ
สรุป
WordPress มีความยืดหยุ่นสูง คุณสามารถใช้เป็นบล็อก ไซต์อีคอมเมิร์ซ หรือแม้แต่ระบบบริหารจัดการการเรียนรู้ ในกรณีส่วนใหญ่ คุณสามารถปรับแต่ง WordPress เพื่อให้เหมาะกับความต้องการเฉพาะของคุณ
อย่างไรก็ตาม ในบางครั้ง คุณอาจต้องใช้โดเมนแยกต่างหากหรือเซิร์ฟเวอร์สำรองเพื่อโฮสต์เว็บไซต์เพิ่มเติม ดังที่ได้กล่าวไว้ก่อนหน้านี้ อาจเป็นเพราะการใช้กองเทคโนโลยีที่แตกต่างกันสำหรับไซต์องค์กรขนาดใหญ่ หรือการเปิดตัวบล็อก WordPress สำหรับไซต์ที่ไม่ใช่ WordPress ที่มีอยู่ก่อน
A reverse proxy can help in both these cases, helping you get the most out of WordPress without giving up the main website and starting over.