February 9, 2012

Pound Untuk Publish Web Server di Belakang Web Server

reversed proxy
Ini berawal ketika ada keinginan dari kami memisahkan web server untuk setiap bagian di tempat saya bekerja, dengan alasan agar kapasitas sebuah server benar-benar digunakan oleh bagian yang bersangkutan dan juga alasan keamanan.

Tetapi terdapat kendala, ip public yang dapat digunakan hanya satu buah ip address, dan itu sudah dipakai oleh web server yang sekarang berjalan.

Terlintas dalam pikiran untuk memakai ip forwarding atau mod_proxy, mulailah mencari dengan mesin pencari andalan “google”, setelah baca sana sini mengenai ip forwarding yang menggunkan iptables dan mod_proxy yang menggunakan ReverseProxy atau ProxyForward pada apache konfigurasi, saya menemukan sebuah tulisan yang bercerita tentang sebuah program Reverse Proxy, Load Balancer dan HTTPS front-end web server , program itu disebut Pound.

Pound dapat meneruskan permintaan akses dari luar ke back-end server dan inilah yang saat ini diperlukan , yaitu program yang dapat meneruskan permintaan dari luar ke back-end server yang memakai ip private. Mulailah kita mendownloadnya, karena kebetulan sistem operasi yang dipakai adalah Fedora 14 i386, tinggal ketik (pada web server yang aktif) :

# yum install Pound

Setelah selesai mulailah mengkonfigurasi, kebetulan saat itu ada 2 dokumen web server yang siap dipublish.  Oh ya, katakanlah ip web server yang aktif adalah 555.555.555.555 dan kita akan menaruh dokumen root tersebut pada web server yang baru dengan ip address 10.10.10.10 dan 10.10.10.11.

Karena sudah ada server apache yang aktif, maka pound tidak dapat berjalan di port 80, tidak apa-apa kita ganti dengan port  8080. Untuk domain kita buat dengan nama yourdomain1.com  dan yourdomain2.com.

gambaran untuk DNS-nya:

 yourdomain1.com IN A 555.555.555.555
 yourdomain2.com IN A 555.555.555.555

Konfigurasi di web server dengan ip public :

# vi /etc/pound.cfg

 User "apache"
 Group "apache"
 Control "/var/lib/pound/pound.cfg"

 ListenHTTP
     Address  555.555.555.555  <<< gantilah dengan Ip public saudara
     Port 8080
         Service
              HeadRequire "Host: .*yourdomain1.com.*"
  
             BackEnd
                 Address 10.10.10.10
                 Port 80
             End
         End

         Service
             HeadRequire "Host: .*yourdomain2.com.*"

             BackEnd
                 Address 10.10.10.11
                 Port 80
             End
         End
 End

Simpan dan start Pound, gunakan perintah berikut:
# /etc/rc.d/init.d/pound start

Untuk memastikan Pound sudah berjalan, perintahnya:

# netstat –ln
tcp         0       0 555.555.555.555:8080          0.0.0.0:*   LISTEN

Nah, sekarang kita konfigurasi server yang baru kita install, diasumsikan disini server juga memakai fedora 14 i386, Konfigurasi httpd.conf : 

# vi /etc/httpd/conf/httpd.conf

   <virtualhost 10.10.10.10:80>
       ServerAdmin admin@yourdomain.com
       DocumentRoot /var/www/domain1
       ServerName 10.10.10.10
       ErrorLog logs/domain1-error_log
       CustomLog logs/domain1-access_log common
   </virtualhost>

   <virtualhost 10.10.10.11:80>
        ServerAdmin admin@yourdomain.com
        DocumentRoot /var/www/domain1
        ServerName 10.10.10.11
        ErrorLog logs/domain1-error_log
        CustomLog logs/domain1-access_log common
   </virtualhost>

Pada konfigurasi diatas terlihat bahwa dokumen root untuk domain1 ada di folder: /var/www/domain1, sedangkan domain2 berada di folder: /var/www/domain2

Setelah selesai simpan dan restart apache :
# /etc/rc.d/init.d/httpd restart

Sekarang cobalah akses ke http://yourdomain1.com:8080 dan http:// yourdomain2.com:8080, pound akan meneruskan permintann ke ip 10.10.10.10 dan 10.10.10.11 tanpa merubah alamat protocol yang ada.

Tambahan :
Jika menginginkan akses ke situs tetap dengan nama yourdomain1.com dan yourdomain2.com, konfigurasikanlah httpd pada ip 555.555.555.555

# vi /etc/httpd/conf/httpd.conf

    <virtualhost yourdomain1.com:80>
        ServerAdmin admin@yourdomain.com
        DocumentRoot /var/www/yourdomain1
        ServerName yourdomain1.com
        ErrorLog logs/domain1-error_log
        CustomLog logs/domain1-access_log common
    </virtualhost>

    <virtualhost yourdomain2.com:80>
        ServerAdmin admin@yourdomain.com
        DocumentRoot /var/www/yourdomain2
        ServerName yourdomain2.com
        ErrorLog logs/domain2-error_log
        CustomLog logs/domain2-access_log common
    </virtualhost>


Simpan dan sebelum Restart Apache, buatlah direktori domain1 dan domain 2 di dalam direktoi /var/www, kemudian buat file index.html pada masing-masing direktori tersebut, Isinya :
  # vi /var/www/domain1/index.html
      <script type="text/javascript">
               top.location.replace('http://yourdomain1.com:8080')
       </script> 

Tujuannya adalah supaya permintaan atas domain tersebut diganti ke port 8080 dimana pound berjalan.

Restart Apache
# /etc/rc.d/init.d/httpd restart

Selamat mencoba

No comments:

Post a Comment