เหตุใดจึงต้องใช้ Reverse Proxy?
ก่อนที่จะพูดถึงขั้นตอนในการกำหนดค่า HAProxy เป็นพร็อกซีย้อนกลับ เรามาเน้นกันอย่างรวดเร็วว่าเหตุใด Reverse Proxy จึงทำงานเพื่อประโยชน์ของคุณ ต่อไปนี้เป็นประโยชน์ที่คุณจะได้รับจากการใช้ HAProxy เป็นพร็อกซีย้อนกลับ:
- โหลดบาลานซ์ – เว็บเซิร์ฟเวอร์ของคุณสามารถมีกรณีของคำขอของลูกค้าจำนวนมากซึ่งหากไม่ได้รับการจัดการอย่างดีก็อาจโอเวอร์โหลดซึ่งทำให้ระบบหยุดทำงานโดยไม่คาดคิด อย่างไรก็ตาม การกำหนดค่าพร็อกซีย้อนกลับทำให้มั่นใจได้ว่าการรับส่งข้อมูลจะถูกกระจายไปยังเซิร์ฟเวอร์แบ็กเอนด์ เพื่อให้แน่ใจว่าไม่มีเซิร์ฟเวอร์ใดได้รับคำขอมากเกินไป
- ไฟร์วอลล์และความปลอดภัย – พร็อกซีย้อนกลับเชื่อมต่ออุปกรณ์ไคลเอนต์กับเว็บเซิร์ฟเวอร์ การทำเช่นนี้จะช่วยลดความเสี่ยงในการเปิดเผยเซิร์ฟเวอร์แบ็กเอนด์ของเรากับอินเทอร์เน็ตโดยตรง ด้วยวิธีนี้ ทราฟฟิกที่เป็นอันตรายจึงสามารถกรองและบล็อกได้อย่างง่ายดายก่อนที่เซิร์ฟเวอร์จะเสียหาย
- แคชที่ดีขึ้น – ด้วย Reverse Proxy คุณจะสังเกตเห็นการปรับปรุงประสิทธิภาพโดยรวม เนื่องจากเวลาในการโหลดจะลดลงโดยการแคชเนื้อหาคงที่ นอกจากนี้คุณยังจะได้รับประสบการณ์การใช้งานที่ดีขึ้นอีกด้วย
- การยกเลิก SSL/TLS – ด้วยพร็อกซีย้อนกลับ การเข้ารหัสและถอดรหัสการเชื่อมต่อ SSL/TLS จะราบรื่น และเซิร์ฟเวอร์แบ็กเอนด์ของคุณจะไม่ต้องแบกรับงานนี้ ซึ่งช่วยลดภาระงาน
วิธีกำหนดค่า HAProxy เป็น Reverse Proxy
หลังจากอธิบายว่าทำไมพร็อกซีย้อนกลับเช่น HAProxy จึงมีความสำคัญ เรามาทำตามขั้นตอนการกำหนดค่ากัน
ขั้นตอนที่ 1: ติดตั้ง HAProxy
คุณอาจติดตั้ง HAProxy ไว้ในระบบของคุณแล้ว หากเป็นเช่นนั้น ให้ข้ามขั้นตอนนี้ อย่างไรก็ตาม สำหรับมือใหม่ ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง HAProxy:
$ sudo apt ติดตั้ง haproxy
เราได้ติดตั้งไว้แล้วในกรณีของเรา
ขั้นตอนที่ 2: แก้ไขไฟล์การกำหนดค่า HAProxy
HAProxy มีไฟล์การกำหนดค่าที่คุณต้องเข้าถึงและแก้ไขเพื่อกำหนดค่าเป็นพร็อกซีย้อนกลับของคุณ เริ่มต้นด้วยการเปิดไฟล์กำหนดค่าโดยใช้โปรแกรมแก้ไขข้อความ
$ sudo นาโน /etc/haproxy/haproxy.cfgเมื่อเปิดขึ้น โปรดทราบว่ามีการกำหนดค่าพื้นฐานสำหรับส่วนเริ่มต้นและส่วนกลาง จากนั้นเราจะต้องสร้างส่วนเพิ่มเติมอีกสองส่วน: ส่วนหน้าและส่วนหลัง ส่วนหน้าจะกำหนดอินเทอร์เฟซที่ควรรับคำขอของไคลเอ็นต์ ในขณะที่ส่วนหลังจะระบุเซิร์ฟเวอร์ที่จะจัดการการรับส่งข้อมูล
สำหรับตัวอย่างนี้ เรากำหนดค่าส่วนหน้าให้ยอมรับคำขอไคลเอ็นต์จากพอร์ต 80 และ 81 จากนั้นเราสร้างกฎเพื่อกระจายการรับส่งข้อมูลเพื่อให้การเชื่อมต่อจากพอร์ต 80 ถูกกำหนดเส้นทางไปยังเซิร์ฟเวอร์เฉพาะ ในขณะที่การเชื่อมต่อจากพอร์ต 81 ไปที่เซิร์ฟเวอร์อื่น เซิร์ฟเวอร์ ส่วนหน้าของเรามีดังต่อไปนี้:
เนื่องจากเราสร้างเซิร์ฟเวอร์แบ็กเอนด์สองเซิร์ฟเวอร์ คือ แบ็กเอนด์2 และ linux_backend เราจึงต้องสร้างส่วนแบ็กเอนด์สำหรับทั้งสองเซิร์ฟเวอร์ เราระบุ IP ที่จะกระจายการรับส่งข้อมูลไปยัง “เซิร์ฟเวอร์1” และ “เซิร์ฟเวอร์2” ของเราสำหรับแต่ละ IP
เมื่อแก้ไขไฟล์การกำหนดค่าแล้ว ให้บันทึกและออกจากไฟล์ โปรดทราบว่ามีหลายวิธีในการกำหนดค่า HAProxy ขึ้นอยู่กับความต้องการของคุณ ในกรณีของเรา เราสร้างเว็บเซิร์ฟเวอร์โดยใช้ที่อยู่ IP ที่ระบุเพื่อกำหนดเส้นทางการรับส่งข้อมูลของเรา เปลี่ยน IP ให้ตรงกับเว็บเซิร์ฟเวอร์ของคุณและพอร์ตที่คุณต้องการฟัง
ขั้นตอนที่ 3: ตรวจสอบความถูกต้อง
ด้วย HAProxy มีคำสั่งที่ให้คุณตรวจสอบว่าไฟล์กำหนดค่าของคุณถูกต้องหรือไม่ รันคำสั่งต่อไปนี้และดูว่าคุณได้รับผลลัพธ์อะไรบ้าง:
$ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
หากคุณได้รับผลลัพธ์ที่คล้ายกัน จะเป็นการยืนยันว่าไฟล์กำหนดค่าของคุณถูกต้อง มิฉะนั้นจะทำให้เกิดข้อผิดพลาด
ขั้นตอนที่ 4: ทดสอบ Reverse Proxy
การใช้คำสั่งเช่น “curl” คุณสามารถส่งการรับส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์ของคุณและดูว่ามันตอบสนองอย่างไร ในกรณีของเรา เราใช้ Python3 เพื่อสร้างเว็บเซิร์ฟเวอร์
การรันคำสั่ง “curl” เป็นการยืนยันว่าเว็บเซิร์ฟเวอร์ของเรากำลังฟังพอร์ตที่ระบุ และ HAProxy ได้กระจายการรับส่งข้อมูลไปยังเซิร์ฟเวอร์ที่ระบุตามไฟล์การกำหนดค่าของเรา
คุณยังสามารถเข้าถึงเว็บเซิร์ฟเวอร์ของคุณบนเบราว์เซอร์และยืนยันว่าพร็อกซีย้อนกลับใช้งานได้
เนื่องจากเรามีเว็บเซิร์ฟเวอร์สองตัวที่สามารถใช้งานได้ขึ้นอยู่กับพอร์ตที่อุปกรณ์ไคลเอนต์ใช้ ลองผูกเว็บเซิร์ฟเวอร์อื่นเข้ากับพอร์ตอื่นแล้วดูว่าเกิดอะไรขึ้น
ผลลัพธ์ต่อไปนี้แสดงให้เห็นว่า HAProxy ส่งการรับส่งข้อมูลของเราไปยังเซิร์ฟเวอร์แบ็กเอนด์ตัวที่สองหลังจากตรวจพบว่าคำขอไคลเอ็นต์ถูกส่งผ่านพอร์ต 81 เพื่อยืนยันว่าการกระจายการรับส่งข้อมูลทำงานตามที่คาดไว้
นั่นคือวิธีกำหนดค่า HAProxy เป็นพร็อกซีย้อนกลับ
บทสรุป
HAProxy เป็นตัวเลือกที่ยอดเยี่ยมสำหรับ Reverse Proxy สำหรับเว็บเซิร์ฟเวอร์ของคุณ การกำหนดค่านั้นตรงไปตรงมา ระบุเฉพาะพอร์ตที่จะรับฟังคำขอของไคลเอ็นต์และกฎที่จะใช้สำหรับการทำโหลดบาลานซ์ จากนั้นเพิ่มเซิร์ฟเวอร์แบ็กเอนด์ที่จะใช้และคุณจะมีพร็อกซีย้อนกลับและทำงานอยู่ โพสต์นี้แชร์ขั้นตอนที่ต้องปฏิบัติตามและสาธิตตัวอย่างเพื่อให้แน่ใจว่าคุณคุ้นเคยกับ HAProxy