Reverse Proxy คืออะไรและทำงานอย่างไร

เผยแพร่แล้ว: 2022-08-09
เซิร์ฟเวอร์เชื่อมต่อผ่านแผนที่โลก
ArtemisDiana/Shutterstock.com

พร็อกซีย้อนกลับเป็นเครื่องมือที่มีประโยชน์ในชุดเครื่องมือของผู้ดูแลระบบ มีประโยชน์มากมาย ทั้งโหลดบาลานซ์ ป้องกันการโจมตี DDOS

Reverse Proxies คืออะไร?

พร็อกซีปกติที่เรียกว่า Forward Proxy เป็นเซิร์ฟเวอร์ที่ใช้เชื่อมต่อของผู้ใช้ ในหลาย ๆ ด้าน มันเหมือนกับ VPN ธรรมดาซึ่งอยู่หน้าการเชื่อมต่ออินเทอร์เน็ตของคุณ VPN เป็นตัวอย่างทั่วไปของสิ่งเหล่านี้ แต่ยังรวมถึงสิ่งต่าง ๆ เช่นไฟร์วอลล์ของโรงเรียน ซึ่งอาจบล็อกการเข้าถึงเนื้อหาบางอย่าง

พร็อกซีย้อนกลับทำงานแตกต่างกันเล็กน้อย เป็นเครื่องมือแบ็กเอนด์ที่ใช้โดยผู้ดูแลระบบ แทนที่จะเชื่อมต่อโดยตรงกับเว็บไซต์ที่ให้บริการเนื้อหา พร็อกซีย้อนกลับ เช่น NGINX สามารถอยู่ตรงกลางได้ เมื่อได้รับคำขอจากผู้ใช้ จะส่ง Forward หรือ “proxy” ที่ร้องขอไปยังเซิร์ฟเวอร์สุดท้าย เซิร์ฟเวอร์นี้เรียกว่า "เซิร์ฟเวอร์ต้นทาง" เนื่องจากเป็นสิ่งที่จะตอบสนองต่อคำขอจริงๆ

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

เอฟเฟกต์นี้ยังเกิดขึ้นในทางกลับกันอีกด้วย เซิร์ฟเวอร์ต้นทางไม่มีการเชื่อมต่อโดยตรงกับผู้ใช้ และจะเห็นเพียงคำขอจำนวนหนึ่งที่มาจาก IP ของพร็อกซีย้อนกลับ นี่อาจเป็นปัญหา แต่บริการพร็อกซี่ส่วนใหญ่เช่น NGINX จะเพิ่มส่วนหัวเช่น X-Forwarded-For ให้กับคำขอ ส่วนหัวเหล่านี้จะแจ้งให้เซิร์ฟเวอร์ต้นทางทราบที่อยู่ IP จริงของลูกค้า

Reverse Proxies ใช้สำหรับอะไร?

Reverse proxy ค่อนข้างเรียบง่ายในแนวคิด แต่พิสูจน์แล้วว่าเป็นเครื่องมือที่มีประโยชน์อย่างน่าประหลาดใจพร้อมกรณีการใช้งานที่ไม่คาดคิดมากมาย

โหลดบาลานซ์

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

วิธีการตั้งค่า HAProxy Load Balancer
ที่เกี่ยวข้อง วิธีการตั้งค่า HAProxy Load Balancer

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

นี่เป็นกรณีใช้งานทั่วไป และผู้ให้บริการระบบคลาวด์ส่วนใหญ่ เช่น Amazon Web Services (AWS) จะเสนอการจัดสรรภาระงานเป็นบริการ ช่วยให้คุณไม่ต้องยุ่งยากในการตั้งค่าด้วยตนเอง ด้วยระบบอัตโนมัติบนระบบคลาวด์ คุณสามารถปรับขนาดจำนวนเซิร์ฟเวอร์ต้นทางโดยอัตโนมัติเพื่อตอบสนองต่อการรับส่งข้อมูล ซึ่งเป็นคุณลักษณะที่เรียกว่า "การปรับขนาดอัตโนมัติ"

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

ที่เกี่ยวข้อง: วิธีเริ่มต้นใช้งาน Elastic Load Balancer ของ AWS

เก็บเอาไว้

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

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

เครือข่ายเฉพาะของ reverse proxy ที่แคชเนื้อหาของคุณเรียกว่า Content Delivery Network หรือ CDN CDN เช่น CloudFlare หรือ Fastly มักถูกใช้โดยเว็บไซต์ขนาดใหญ่เพื่อเพิ่มความเร็วในการจัดส่งทั่วโลก เซิร์ฟเวอร์ทั่วโลกที่แคชเนื้อหาเรียกว่า "โหนดขอบ" และการมีเซิร์ฟเวอร์จำนวนมากจะทำให้เว็บไซต์ของคุณรวดเร็ว

การปกป้องเครือข่ายและความเป็นส่วนตัว

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

สิ่งนี้ทำให้การกำหนดค่าเครือข่ายของคุณเป็นส่วนตัว และแม้ว่าการรักษาความปลอดภัยผ่านความมืดจะไม่มีทางป้องกันได้ แต่ก็ดีกว่าปล่อยให้เปิดทิ้งไว้เพื่อโจมตี

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

ส่วนหน้าที่กำหนดค่าได้

ข้อดีอย่างหนึ่งของพร็อกซีแบบย้อนกลับเช่น NGINX คือความสามารถในการกำหนดค่าได้สูง บ่อยครั้ง มีประโยชน์เมื่อต้องอยู่หน้าบริการอื่นๆ เพียงเพื่อกำหนดค่าวิธีที่ผู้ใช้เข้าถึงบริการเหล่านั้น

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

NGINX ยังสามารถส่งต่อการรับส่งข้อมูลจากชื่อโดเมนหลายชื่อด้วยบล็อก "เซิร์ฟเวอร์" ที่กำหนดค่าได้ ตัวอย่างเช่น สามารถส่งคำขอไปยัง example.com ไปยังเซิร์ฟเวอร์ต้นทางของคุณ แต่ส่ง api.example.com ไปยังเซิร์ฟเวอร์ API พิเศษของคุณ หรือ files.example.com ไปยังพื้นที่จัดเก็บไฟล์ของคุณ เป็นต้น แต่ละเซิร์ฟเวอร์สามารถมีการกำหนดค่าและกฎของตนเองได้

NGINX ยังสามารถเพิ่มคุณสมบัติพิเศษบนเซิร์ฟเวอร์ต้นทางที่มีอยู่ เช่น ใบรับรอง HTTPS แบบรวมศูนย์และการกำหนดค่าส่วนหัว

บางครั้ง การมี NGINX อยู่ในเครื่องเดียวกันกับบริการอื่นในเครื่องก็มีประโยชน์ เพียงแค่ให้บริการเนื้อหาจากบริการนั้น ตัวอย่างเช่น ASP.NET web APIs ใช้เว็บเซิร์ฟเวอร์ภายในที่เรียกว่า Kestrel ซึ่งตอบสนองต่อคำขอได้ดี แต่ไม่มาก เป็นเรื่องปกติมากที่จะเรียกใช้ Kestrel บนพอร์ตส่วนตัวและใช้ NGINX เป็น reverse proxy ที่กำหนดค่าได้

การบันทึกแบบรวมศูนย์

อันนี้ค่อนข้างง่าย แต่การที่ทราฟฟิกส่วนใหญ่ของคุณผ่านบริการเดียวทำให้ง่ายต่อการตรวจสอบบันทึก บันทึกการเข้าใช้ของ NGINX มีข้อมูลที่เป็นประโยชน์มากมายเกี่ยวกับการเข้าชมของคุณ และแม้ว่าจะไม่ได้เหนือกว่าคุณลักษณะของบริการอย่าง Google Analytics แต่ก็เป็นข้อมูลที่ดีที่ควรมี

ที่เกี่ยวข้อง: วิธีตั้งค่า Elasticsearch Analytics และ Monitoring Panel สำหรับธุรกิจของคุณ