my space

Reverse Proxy and Proxy

proxynetworkinfra

September 22, 2020

สองอย่างนี้มันต่างกันยังไง ทำไมต้องเรียก Reverse Proxy ด้วย (มัน Reverse อะไร?) ได้ไอเดีย, รูปและ content ของ blog นี้มาจากบทความ Reverse Proxy ของ Cloud Flare

เริ่มจาก

Proxy คืออะไร

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

Proxy แบบนี้เรียกชื่อเต็มๆว่า Forward Proxy คือเราสั่งงานผ่าน Proxy แล้ว Proxy นำคำสั่งนั้นยิงออกไปยัง internet ให้เรา

Forward Proxy

ประโยชน์ที่มักจะใช้จาก Proxy เช่น

  • เพื่อหลีกเลี่ยงข้อจำกัดการใช้งาน เช่นโรงเรียนอาจจะตั้งกฏการใช้ network ว่าห้ามเข้า website 1,2,3,4 เหล่านี้ แต่ถ้าต่อผ่าน proxy คำสั่งของเราที่ยิงออกไป internet ก็อาจจะไม่ต้องผ่านการกรองของกฏเหล่านั้น
  • เพื่อจำกัดการใช้งาน อันนี้ตรงข้ามกับข้อข้างบน เช่นโรงเรียนอาจจะตั้งกฏว่าถ้าจะเข้าสู่ internet จะต้องต่อ proxy นี้เท่านั้น (ถ้าไม่ต่อก็จะไม่ให้ออก) และเมื่อ request ที่วิ่งผ่าน proxy มา โรงเรียนก็สามารถ apply ข้อจำกัดบางอย่างของการใช้งานได้ (เช่นห้ามเข้า website 1,2,3,4 อะไรก็ว่าไป)
  • ป้องกันข้อมูลส่วนตัว เช่น ip จากต้นทางของเราจะถูกแทนที่ไปด้วย proxy server เช่นเราอยู่ประเทศไทย ปกติถ้าเรายิง request ตรงๆไปที่ปลายทาง ปลายทางก็จะรู้ว่าเรายิงมาจาก ip ที่มาจากประเทศไทยนะ แต่ถ้าเรายิงไปที่ proxy server ที่สิงคโปร์แล้ว proxy ค่อยยิงต่อไปหาปลายทาง แบบนี้ที่ server ปลายทางก็จะเห็นว่า ip นี้มาจากสิงคโปร์

แล้ว Reverse Proxy ละ

ตามชื่อว่า Reverse เลย คือมอง Proxy ในมุมกลับ แทนที่จะเป็นคนรับ request จากเครื่องภายใน network แล้วส่งไป internet ก็กลับมาเป็นคนรับ request จาก internet แล้วส่งต่อเข้าไปหา server ที่อยู่ใน network

Reverse Proxy

ตัวอย่างก็คล้ายๆกับบุรุษไปรษณีย์ที่รับจดหมายจากสำนักงาน แล้วเอาไปวิ่งส่งให้ตามบ้านนั่นเอง

ประโยชน์ที่ได้จาก Reverse Proxy เช่น

  • ทำตัวเป็น load balancer คอยกระจาย load เท่าๆกันไปยัง server ข้างหลัง
  • cache ข้อมูล
  • ป้องกันการโจมตี โดย attacker จะรู้แค่ target ที่เป็น reverse proxy แต่ไม่รู้ข้อมูล server ที่อยู่ด้านหลัง ดังนั้นก็ป้องกัน reverse proxy server ดีๆ

เป็นต้น


gie

Written by gie who lives and works in Bangkok. Build things by code.
my twitter | github