NGINX คือ ตอนที่ 5 : Load Balancing และ Reverse Proxy

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

1. ทำความเข้าใจกับ Reverse Proxy

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

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

2. การตั้งค่า NGINX เป็น Reverse Proxy

หากต้องการกำหนดค่า NGINX เป็น reverse proxy คุณต้องแก้ไขไฟล์กำหนดค่า NGINX ( nginx.conf) สมมติว่าคุณมีเว็บแอปพลิเคชันที่ทำงานบนเครื่องท้องถิ่นที่ localhost:3000 หากต้องการตั้งค่า NGINX เป็นพร็อกซีย้อนกลับสำหรับการทำเว็บและทำแอพนี้ คุณต้องรวมบล็อกเซิร์ฟเวอร์ไว้ในไฟล์การกำหนดค่าดังนี้:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;
    }
}

ในตัวอย่างนี้ NGINX จะรับฟังคำขอบนพอร์ต 80 และส่งต่อไปยังแอปพลิเคชันในเครื่องที่ทำงานบนพอร์ต 3000 คำสั่ง proxy_pass จะระบุที่อยู่ของพร็อกซีเซิร์ฟเวอร์

3. ทำความเข้าใจเกี่ยวกับโหลดบาลานซ์ (Load Balancing)

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

4. โหลดบาลานซ์ (Load Balancing) ด้วย NGINX

NGINX นำเสนอกลยุทธ์ต่างๆ มากมายสำหรับการจัดสรรภาระงาน ซึ่งรวมถึง Round-robin, การเชื่อมต่อน้อยที่สุด และ IP-hash

วิธี การ วนรอบกระจายคำขอของไคลเอ็นต์ตามลำดับไปยังเซิร์ฟเวอร์ทั้งหมดในรายการ

Least-connections ตามชื่อที่แนะนำ ส่งคำขอไคลเอนต์ใหม่ไปยังเซิร์ฟเวอร์ที่มีการเชื่อมต่อที่ใช้งานน้อยที่สุด

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

ต่อไปนี้คือตัวอย่างวิธีกำหนดค่าโหลดบาลานซ์ด้วยวิธีปัดเศษ:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

ในการกำหนดค่านี้ NGINX จะกระจายคำขอขาเข้าไปยังเซิร์ฟเวอร์แบ็กเอนด์สามเครื่องในลักษณะวนรอบ

5. การใช้ Load Balancing สำหรับสภาพแวดล้อมเว็บและแอพ

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

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


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


NGINX คืออะไร

NGINX คือ ตอนที่ 4 : การกำหนดค่า HTTPS และ SSL
NGINX คือ ตอนที่ 6 : การกำหนดค่าขั้นสูง