apache2: การติดตั้งให้เรียกใช้งานเซิร์ฟเวอร์ภายในจากภายนอก

debian: lenny/etch
package: apache2.2 (2.2.9-10+lenny1/2.2.3-4+etch6)

สมมุติว่าเซิร์ฟเวอร์ภายนอก ชื่อ www.example.com มีการติดตั้ง apache2 ไว้แล้ว และเซิร์ฟเวอร์ภายใน ชื่อ internal.example.com มีการติดตั้ง apache2 ไว้แล้วเช่นกัน ต้องการให้ผู้ใช้ภายนอกเรียกเว็บที่ internal.example.com ได้

ทำที่เครื่องเซิร์ฟเวอร์ภายนอกอย่างเดียว โดยใช้มอดูล proxy_http

# a2enmod proxy
# a2enmod proxy_http
# /etc/init.d/apache2 reload

ติดตั้งชื่อไฟล์ไซต์ใน sites-available ว่า internal

# vi /etc/apache2/sites-available/internal
<VirtualHost *:80>
    ServerAdmin webmaster@internal.example.com
    ServerName internal.example.com
    ProxyRequests Off

    <Proxy *>
        Order Deny,Allow
        Allow from all
    </Proxy>

    ProxyPreserveHost On
    ProxyPass / http://internal.example.com/
    ProxyPassReverse / http://internal.example.com/
</VirtualHost>

เปิดใช้งาน

# a2ensite internal
# /etc/init.d/apache2 reload

เสร็จแล้ว

ถ้าเราตั้งค่า DNS ของภายนอกไว้แล้ว สามารถเรียกจากภายนอกผ่าน internal.example.com ได้

Topic: 

Comments

ผมก็ใช้ Module นี้เหมือนกันครับ
แต่วัตถุประสงค์ต่างกัน คือ ต้องการให้ เครื่องภายใน วิ่งออกไปหา Web ข้างนอก
555 ฟังดูงง ๆ ใช่ไหมครับ

ก็ไม่มีอะไรครับ มันเป็นเคสหนึ่ง ที่เครือข่าย ม.ขอนแก่น
ที่เครื่องลูกจะต้องทำการ Authen ก่อนถึงจะเข้า Net ได้
แต่ถ้ายังไม่มี Username ในการ Authen
สามารถสมัครได้ที่ web server ของมหาวิทยาลัย
แต่ติดตรงที่เครื่อง Server นั้นไม่ได้อยู่ในเครือข่ายภายใน (แยกกันอยู่)
ก็เลยใช้ proxy_http นี่หละครับ

ProxyRequests Off
<Proxy *>
  AddDefaultCharset off
  Order deny,allow
  Allow from all
</Proxy>

ProxyPass /account http://202.12.xxx.xxx/account
ProxyPassReverse /account http://202.12.xxx.xxx/account
ProxyVia Off

ตอนนี้ ก็สามารถที่จะเข้าไปสมัครได้ จาก web ภายใน

http://authenweb.local/account

___
Neutron: Linux Addict!

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้