26 February 2012

Menjadikan Apache sebagai Proxy Web Server

Pembaca yang budiman, jika beberapa waktu yang lalu, kita mencoba membuat Web Server Balancer Apache2 dan Tomcat5.5 dengan menggunakan ModJK. Kali ini kita akan mencoba membuat sebuah proxy web server dengan menggunakan Apache2.
Dewasa ini penggunaan Load Balancer ataupun Proxy pada sebuah Web Server adalah sebuah kebiasaan baru dalam rangka menyiasati tingginya pengunjung terhadap sebuah web aplikasi yang kita buat. Proxy atau Load Balancer mampu meringankan kerja sebuah server web aplikasi dengan cara mendistribusikan request-request HTTP terhadap sebuah web aplikasi, sehingga kerja sebuah Web Server menjadi lebih ringan.
Belum lagi banyaknya framework atau web aplikasi yang terkadang didistribusikan secara bundled dengan web server terintegrasi didalamnya. Sehingga amat sangat mungkin dalam satu mesin server kita memiliki begitu banyak web server yang berjalan.
Mari kita mulai percobaan ini. Skenario kita kali ini adalah membuat sebuah Proxy Web Server yang akan menjadi gateway beberapa Web Server lainnya. Dalam percobaan ini saya akan menggunakan sebuah server Apache2 sebagai gateway-nya, sebuah web server Tomcat sebagai salah satu web server aplikasi dan sebuah web server JBoss yang berisi web aplikasi Liferay sebagai salah satu web server aplikasi juga.
Adapun skenario yang akan kita susun seperti dibawah ini:
  1. Web server Apache2 sebagai proxy akan listen pada port 80.
  2. Web server Tomcat akan berisi sebuah aplikasi bernama TestingApp, dan Tomcat ini akan listen pada port 6060. Untuk web aplikasi TestingApp ini, hanya akan berisi sebuah file index.html dengan tulisan "Testing App"  pada tag body-nya, dan sebuah file standar web.xml pada folder WEB-INF. Atau jika pembaca bingung silahkan download file berikut ini dan kemudian extract-lah pada [Tomcat_Install_dir]/webapps/.
  3. Web aplikasi Liferay yang akan dijalankan oleh web server JBoss akan listen pada port 8080.
  4. Semua HTTP request akan menuju pada port 80. Jika alamat URL yang di request oleh client adalah http://localhost/TestingApp maka Apache2 akan meneruskan request tersebut ke web server Tomcat dengan aplikasi TestingApp.
  5. Dan jika alamat URL yang diakses oleh client adalah http://localhost/portal, maka Apache2 akan meneruskan request tersebut ke web server Jboss yang berisi web aplikasi Liferay.
Saya akan mempersingkat langkah-langkah percobaan kali ini dengan cara menganggap pembaca sekalian sudah menginstall ketiga web server tersebut. :P. Sehingga jika kita melakukan testing pada masing-masing server tersebut akan terlihat seperti pada gambar berikut ini:

Testing Apache2

Testing Liferay'portal'


Testing Tomcat 'TestingApp'
Semua web server tersebut sudah berjalan pada port masing-masing. Langkah selanjutnya adalah kita akan membuat semuanya menggunakan port 80 (http default port) dengan cara menjadikan Apache sebagai web server proxy-nya, sehingga jika client mengetikkan URL http://localhost/TestingApp, maka ia akan diarahkan ke web server Tomcat, dan jika client mengetikkan URL http://localhost/portal, maka ia akan diarahkan ke web server JBoss yang berisi web aplikasi Liferay tersebut.
Cara agar Apache2 bisa berlaku sebagai web server proxy adalah dengan meng-enable-kan module mod_proxy.so dan module mod_proxy_http.so. ini bisa dilakukan dengan cara meng-edit file httpd.conf yang ada pada [Apache_install_dir]/conf. seperti contoh berikut ini:

LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so


Dalam konfigurasi tersebut kita membuang tanda # pada dua baris Load Module, yang artinya kita meng-enable-kan dua module tersebut pada Apache2. Langkah selanjutnya adalah kita menambahkan baris-baris berikut ini pada baris terakhir file httpd.conf yang tadi.

ProxyPass /TestingApp http://localhost:6060/TestingApp
ProxyPassreverse /TestingApp http://localhost:6060/TestingApp

ProxyPass /portal http://localhost:8080/portal
ProxyPassreverse /portal http://localhost:8080/portal


Silahkan pembaca pahami sendiri arti dari baris-baris diatas. Setelah semua konfigurasi tersebut kita lakukan, maka langkah selanjutnya adalah kita tinggal me-restart Apache2 yang kita miliki dan cobalah kita akses url-url yang saya contohkan tadi diatas dengan menghilangkan port-portnya, seperti gambar berikut ini.

Testing Tomcat 'TestingApp' tanpa port


Testing JBoss Liferay 'portal' tanpa port
Jika semuanya sudah bisa dilakukan maka, percobaan kita kali ini bisa kita katakan sudah berhasil. Silahkan pembaca gunakan sebagaimana perlunya, dan silahkan di kembangkan sesuai dengan kebutuhan.
Terima kasih dan semoga bermanfaat.

Menteng, 26 Februari 2012

Josescalia
 

No comments: