วันเสาร์ที่ 26 กรกฎาคม พ.ศ. 2557

ใช้ apache2 เป็น proxy กันเถอะ

ด้วยสาเหตุอะไรก็ช่าง
เอาเป็นว่า เราสามารถใช้ apache2 เป็น proxy สำหรับ load URL อื่น ๆ มาได้ทันที

เช่น
ServerA มี apache2 ใช้งานอยู่
ปกติแล้ว เราสามารถเปิด web http://www.ServerA.com
เพื่อเรียกดูเวปที่ /var/www ของ ServerA

ถ้า proxy ล่ะ คืออะไร
เราสามารถเซตให้ apache2 ไปเปิดเวปอื่น เช่น http://www.AnyWWW.com/
เมื่อเราเปิด web http://www.ServerA.com

แทนที apache2 จะเรียกเวปจาก /var/www ของ ServerA
จะกลายเป็นว่า apache2 ไปเรียกเวปจาก http://www.AnyWWW.com/

หาก Config apache2 ที่ ServerA ด้วย
ProxyPass / http://www.AnyWWW.com/
apache2 ก็จะทำให้ ServerA กลายเป็น mirrors ของ http://www.AnyWWW.com/

หรือ หาก Config apache2 ที่ ServerA ด้วย
ProxyPass /anywww/ http://www.AnyWWW.com/
เมื่อเราเปิด http://www.ServerA.com/anywww/ เราก็จะได้ข้องมูล http://www.AnyWWW.com/

โดยเราจะเรียก ServerA ว่าเป็น reverse proxy หรือ gateway สำหรับ AnyWWW.com
*ซึ่งหากเราต้องการใช้ คำสั่ง ProxyPass ก็ควรเซต ProxyRequests ให้เป็น Off 
** ProxyRequests On จะหมายถึงเราต้องการใช้เป็น forward proxy (คล้าย ๆ พวก squid)

อย่าลืม enable module ด้วยคำสั่ง
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ftp <- ถ้าใช้

เอาหละ ทีนี้ เราสามารถใช้ proxy ร่วมกับ VirtualHost ของ apache2 ได้ด้วย
เพื่อเพิ่มความวุ่นวายให้กับชีวิต

<VirtualHost *:80>
     ServerName AnyWWW.ServerA.com

     ProxyRequests off
     ProxyPass / http://www.AnyWWW.com/
</VirtualHost>

หมายความว่า หากมี Request เข้ามาที่ Port 80 ด้วย DNS AnyWWW.ServerA.com
ให้ไปเรียกเวปจาก http://www.AnyWWW.com/

ทีนี้ถ้าจะให้ดี ก็เพิ่ม
ProxyPassReverse / http://www.AnyWWW.com/
เพื่อให้ apache2 แก้ไข header ที่ได้มาจาก http://www.AnyWWW.com/
ให้เหมือนกับว่าข้อมูลมาจาก AnyWWW.ServerA.com เอง

ที่เหลือก็สุดแล้วแต่จะประยุกต์ใช้จ้า


ไม่มีความคิดเห็น:

แสดงความคิดเห็น