Proxy vs Reverse Proxy
ทั้ง Proxy และ Reverse Proxy ต่างก็เป็นคำที่เราได้ยินกันอยู่บ่อยๆ แต่อาจยังไม่ค่อยเข้าใจว่า Proxy และ Reverse Proxy ต่างกันอย่างไร ในบทความนี้เราจะพาคุณไปทำความรู้จักกับ Proxy และ Reverse Proxy กัน
Proxy(Forward Proxy)
Proxy หรือ Forward Proxy คือ Server ตัวกลางที่ขวางหน้า Client ไว้ ก่อนที่ Client จะส่ง Request ออกไปข้างนอก
Proxy ทำงานยังไง?
ขั้นตอนการทำงานของ Proxy หรือ Reverse Proxy มีดังนี้
- ผู้ใช้ส่ง Request ไปยัง Proxy
- Proxy จะไปเรียกข้อมูลจาก Server ปลายทางแทน
- เมื่อ Proxy ได้รับข้อมูลจาก Server ปลายทางแล้วก็จะส่งกลับมาที่ผู้ใช้งาน
ประโยชน์ของ Proxy
การใช้งาน Proxy จะมีประโยชน์อยู่ 2 เรื่องใหญ่ๆดังนี้
- Performance การมี Proxy จะช่วยให้ระบบมีความเร็วมากขึ้น โดยเฉพาะเมื่อเราเข้า Web เดิมๆ หรือ Download File เหมือนๆกัน เพราะ Proxy จะเก็บผลลัพธ์ของข้อมูลที่ได้รับมาจาก Server ปลายทางมาไว้ใน Cache
- Security ในด้านของความปลอดภัย เราก็ต้องใช้ Proxy ในการป้องกันไม่ให้ผู้ใช้งานของเราเข้า Web ที่มีความเสี่ยง ดังนั้น Proxy ส่วนใหญ่จะมี Blacklist ของ Website ที่ไม่น่าไว้วางใจ รวมทั้งห้ามไม่ให้ Download ไฟล์ที่สามารถ Execute ได้ เช่น .exe หรือ .sh
นอกจากนี้ Proxy ยังสามารถนำไปใช้ประโยชน์ในด้านอื่นๆ ดังนี้
- ซ่อนหรือปกปิดตัวตนของผู้ใช้ (เช่น ใช้ Proxy ที่อยุ่ในประเทศอื่น)
- By pass การ Block เว็บไซต์
- ใช้สำหรับการทดสอบด้านความปลอดภัย(Security Testing หรือ Pen-Test)
Proxy ทำงานผั่ง “Client” ช่วยป้องกันและเพิ่มประสิทธิภาพให้กับ Users
Reverse Proxy
Reverse Proxy คือ Server ตัวกลางที่ขวางไว้หน้า Web Server(ผู้ให้บริการตัวจริง: Origin Server) หลังจากรับ Request มาจากผู้ใช้แล้ว Reverse Proxy จะส่งต่อ Request นั้นไปยัง Server ปลายทาง จากนั้นจะรอรับ Response กลับมา แล้วส่งกลับไปให้กับผู้ใช้งาน
หากจะเปรียบเทียบให้เข้าใจง่าย Reverse Proxy ก็เหมือนกับพนักงานหน้าร้านที่รับ Order จากลูกค้า แล้วเดินไปบอกพ่อครัว จากนั้นเมื่อพ่อครัวทำอาหารเสร็จ เด็กเสิร์ฟก็จะนำอาหารมาเสิร์ฟให้ลูกค้า โดยที่ลูกค้าไม่จำเป็นต้องรู้ว่าใครคือพ่อครัวตัวจริง
การทำงานของ Reverse Proxy
- ผู้ใช้ส่ง Request ไปยัง Website เช่น
www.example.com
- เมื่อ Request ไปถึง Reverse Proxy ก่อนที่จะไปถึง Web Server
- Reverse Proxy จะทำการแปลงรูปแบบของ Reqeust หรือตรวจสอบสิทธิ์การเข้าถึง(Authorize)
- จากนั้น Reverse Proxy จะส่ง Request ไปยัง Server ปลายทาง
- รอรับ Response กลับมาเก็บไว้ใน Cache และส่งกลับไปให้ User
Reverse Proxy มีประโยชน์ยังไง?
Reverse Proxy มี Features ต่างๆให้เลือกใช้งานเยอะมากๆ ชึ้นอยู่กับเครื่องมือที่เราเลือกใช้ ซึ่ง Features หลักๆของ Reverse Proxy มีดังนี้
- Load Balancing กระจายงานไปยัง Server หลายๆตัว เพื่อป้องกันการล่มและเพิ่มความเร็วให้กับผู้ใช้งาน
- Security ซ่อนรายละเอียดของโครงสร้างภายในของ Server ซึ่งทำให้ Attacker จะมองไม่เห็นเป้าหมายที่แท้จริง
- Caching เก็บผลลัพธ์ไว้ชั่วคราว เพื่อลดภาระของ Server ปลายทางและมี Response Time ที่ดีขึ้น
- SSL/TLS จัดการการเข้ารหัสด้วย Protocol Https โดยไม่ต้องกำหนด Certificate ให้กับทุก Server(SSL Termination หรือ SSL Offloading)
- Authen and Authorize ตรวจสอบสิทธิของผู้ใช้งานก่อนเข้าใช้งานระบบ
- Logging จัดเก็บ Log ไว้เพื่อนำไปใช้เป็นหลักฐานเมื่อเกิด Incident หรือส่งเข้าไป Monitor หาความผิดปกติของ Request หรือวิธีการเข้าถึง Web ที่น่าสงสัย
ตัวอย่าง Reverse Proxy
ในตลาดมี Reverse Proxy อยู่เยอะมาก นี่คือส่วนหนึ่งของ Reverse Proxy ที่คุณน่าจะต้องรู้จักไว้
- Nginx: ถือว่าเป็น Reverse Proxy ที่ได้รับความนิยมมากที่สุด เนื่องจาก Nginx มีขนาดเล็กและทำงานได้เร็ว เหมาะกับทั้ง Static และ Dynamic Content
- HAProxy: เป็น Reverse Proxy ยอดนิยมในอดีตจะดังในกลุ่มของผู้ใช้ Java
- Traefik: เป็น Reverse Proxy ที่ดังในกลุ่มผู้ใช้งาน Container, Kubernetes และใช้ Cloud Services ถือว่าเป็นน้องใหม่ที่มาแรงมาก
ข้อควรระวังในการใช้ Reverse Proxy
- หากตั้งค่าไม่ถูกต้อง อาจเปิดช่องให้ผู้ไม่หวังดีโจมตีได้
- ต้องมีการดูแลรักษาและอัปเดตซอฟต์แวร์อยู่เสมอ
- ควรมีระบบตรวจสอบ (Monitoring System หรือ SEIM) เพื่อประเมินประสิทธิภาพและตรวจหาปัญหา เพราะเราจะค้นหาปัญหาได้ยากกว่าระบบที่ไม่มี Reverse Proxy
Reverse Proxy ทำงานฝั่ง “Server” ช่วยป้องกันและเพิ่มประสิทธิภาพให้กับ Server
สรุปความแตกต่างของ Proxy และ Reverse Proxy
Proxy (Forward Proxy) | Reverse Proxy | |
---|---|---|
ทำงานแทนใคร | ผู้ใช้ (Client) | เซิร์ฟเวอร์ (Server) |
จุดประสงค์หลัก | กรองเว็บ, Caching | Caching, Load Balance, Security |
ผู้ใช้รู้จักกับ Server ปลางทาง | ใช่ | ไม่รู้ว่า Server จริงอยู่ที่ไหน |
ทำงานอยู่ที่ | Client-side | Server-side |
ในการออกแบบระบบที่ต้องรองรับผู้ใช้งานปริมาณมากๆ จำเป็นต้องนำ Reverse Proxy เข้ามาช่วย ทั้งในเรื่องของการ Cache และการกระจาย Load(Load Balance) ซึ่งจะช่วยเพิ่มประสิทธิภาพให้กับ Web Server ของเรารวมทั้งยังสามารถทำการ Scale-Up หรือ Scale-Down ตามปริมาณ Requests ที่เข้ามา
หวังว่าผู้อ่านจะเข้าใจความแตกต่างของ Proxy และ Reverse Proxy มากขึ้นและสามารถเลือกนำไปใช้ในระบบของเราได้อย่างเหมาะสม