Recent Post

Jumat, 21 Juni 2013

Reverse Proxy dengan Apache HTTP server

Anda sudah terlanjur memiliki beberapa mesin web server pada local area network yang
menjalankan beberapa aplikasi berbasis web yang berbeda serta berjalan pada paltform system yang
juga berbeda namun tuntutan kebutuhan perusahaan mengharuskan aplikasi-aplikasi web tersebut
dapat diakses dari jaringan public (internet) tanpa harus merubah kode sumber dari aplikasi web
dan konfigurasi web server tersebut. Cara untuk menyelesaikan masalah tersebut adalah dengan
meminta(menyewa) kepada ISP agar disediakan beberapa blok IP public sejumlah atau sebanyak
yang dapat diberikan kepada masing-masing mesin web server tersebut, kemudian memetakan
nama masing-masing mesin web server tersebut dengan beberapa IP public yang telah disediakan
ISP pada dns server pengelola domain perusahaan Anda. Namun bagaimana dengan kasus yang lain
yaitu Anda tidak memiliki atau dengan kata lain ISP tidak dapat menyediakan IP public yang sesuai
dengan jumlah mesin web server tersebut, misalnya ISP hanya dapat menyediakan 2 buah IP public
yang dapat digunakan sedangkan mesin web server berjumlah tiga buah dan belum lagi mesin
email server juga memerlukan IP public. Hmm...apa benar-benar ada kondisi atau permasalahan
seperti ini ? Ya mungkin saja, karena permasalahan tersebut memang ada solusinya sebab tidak
akan ada suatu persoalan jika tidak ada penyelesaiannya :) . Permasalahan tersebut dapat
diselesaikan dengan cara menerapkan http reverse proxy. Nah..untuk itu pada artikel kali ini
penulis akan menjelaskan bagaimana menerapkan reverse proxy dengan pendekatan kasus yang
telah diungkapkan tadi.
Pada artikel ini penulis menerapkan reverse proxy di Apache HTTP server versi 2 bawaan distro
linux CentOS 5.2.
I. HTTP Proxy
Sebelum kita melangkah pada penerapan http reverse proxy, penulis akan menjelaskan sedikit
tentang apa itu HTTP proxy. HTTP proxy atau web proxy secara sederhana adalah sebuah gateway
yang menjadi perantara user dengan web-web server yang sebenarnya (web-web server di Internet).
Umumnya http proxy dikenal menjadi dua jenis http proxy yaitu forward proxy dan reverse proxy,
namun forward proxy sering disingkat penyebutannya dengan http proxy atau web proxy saja.
I.1. Forward Proxy
Forward proxy adalah http proxy yang menjadi perantara user-user pada local area network dengan
web-web server yang terdapat pada internet, penerapan forward proxy umumnya disertai
mekanisme web cache untuk mengefisienkan bandwidth dan meningkatkan akselerasi akses web,
pada prakteknya jenis http proxy inilah yang umum digunakan atau diterapkan. Software yang
umumnya digunakan untuk keperluan forward proxy yaitu squid http proxy server.
I.2.Reverse Proxy
Reverse proxy memiliki maksud yang berkebalikan dengan forward proxy yaitu menjadi perantara

user-user di internet terhadap akses ke web-web server yang berada pada local area network,
sehingga seolah-olah user di internet mengakses langsung web server yang dimaksud padahal
sesungguhnya user di internet mengakses web-web server yang terdapat di local area network
melalui reverse proxy tersebut. Tentunya komputer yang bertindak sebagai reverse proxy tersebut
memiliki IP public yang static sehingga dapat diakses dari internet. Software yang umumnya
digunakan untuk keperluan reverse proxy yaitu apache http server dengan mod_proxy nya.
II. Skenario
Untuk mempermudah pemahaman Anda tentang bagaimana penerapan reverse proxy di apache http
server, penulis membuat skenario sebagai berikut:
● Anda memiliki 2 buah IP public yang masing-masing diberikan ke modem/router ADSL
(misalnya ip=202.202.202.153/30) dan ke eth0 dari komputer bakal reverse
proxy(ip=202.202.202.154/30), lihat Gambar-1
● Komputer yang berfungsi sebagai reverse proxy juga berfungsi sebagai internet shraing bagi
komputer lainnya dalam LAN
● Local area network Anda memiliki network address 192.168.1.0/24
● IP address local dari komputer reverse proxy adalah 192.168.1.1
● Jumlah web server local adalah tiga buah yang masing-masing menjalankan aplikasi web
untuk marketing (ip=192.168.1.2) , hrd (ip=192.168.1.3), dan finance(192.168.1.4).
● Untuk mengakses aplikasi web marketing dari internet menggunakan alamat url
http://marketing.example.com
● Untuk mengakses aplikasi web hrd dari internet menggunakan alamat url
http://hrd.example.com
● Untuk mengakses aplikasi web hrd dari internet menggunakan alamat url
http://finance.example.com
● Penerapan reverse proxy tidak disertai dukngan web cache
● Diasumsikan Anda telah mendaftarkan pada DNS server pengelola domain example.com,
untuk nama host marketing.example.com, dan hrd.example.com serta finance.example.com
dipetakan ke ip 202.202.202.154 (yaitu IP public dari komputer reverse proxy)
● Pada komputer reverse proxy default gateway diset ke ip 202.202.202.153, dan pada
komputer-komputer di local area network default gateway diset ke ip 192.168.1.1

Gambar-1. Diagram jaringan reverse proxy
III. Konfigurasi Gateway
Langkah konfigurasi berikut ini bertujuan memungkinkannya traffic dari komputer-komputer pada
LAN dapat diteruskan ke internet. Lakukan perintah-perintah berikut ini untuk membuat
gateway/internet sharing (diasumsikan kebijakan default firewall tidak memblok koneksi apapun):
Pertama mengaktifkan IP Forward sbb:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo echo 1 > /proc/sys/net/ipv4/ip_forward >> /etc/rc.local
atau Edit file /etc/sysctl.conf, dan set parameter net.ipv4.ip_forward=1
Kedua mengaktifkan IP Masquerade sbb:
# service iptables stop
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# service iptables save
# chkconfig iptables on
IV. Konfigurasi reverse proxy apache http server
Dengan asumsi apache http server sudah terinstal, langkah berikutnya yang Anda lakukan adalah
konfigurasi apache sebagai reverse proxy. Tetapi perlu diperhatikan sebelumnya bahwa apache
membutuhkan mod_proxy. Untuk memastikan apakah sudah ada mod_proxy atau belum serta
apakah sudah dimuat oleh apache saat runtime, lakukan langkah berikut ini:
# ls /etc/httpd/modules/ |grep mod_proxy.so
Jika perintah tersebut menghasilkan output “mod_proxy.so”, maka modul mod_proxy sudah ada.

# grep mod_proxy.so /etc/httpd/conf/httpd.conf
Jika perintah tersebut menghasilkan output “LoadModule proxy_module modules/mod_proxy.so”,
maka mod_proxy sudah running.
Selanjutnya agar sesuai dengan skenario reverse proxy yang telah ditentukan maka tambahkan
baris-baris berikut ini pada bagian akhir dari file konfigurasi /etc/httpd/conf/httpd.conf.
NameVirtualHost 202.202.202.154
<VirtualHost 202.202.202.154:80>
ServerName marketing.example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.2/
ProxyPassReverse / http://192.168.1.2/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
<VirtualHost 202.202.202.154:80>
ServerName hrd.example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.3/
ProxyPassReverse / http://192.168.1.3/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
<VirtualHost 202.202.202.154:80>
ServerName finance.example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.4/
ProxyPassReverse / http://192.168.1.4/
<Proxy *>
Order deny,allow
Allow from all

</Proxy>
</VirtualHost>
Setelah mengeit dan menyimpan file konfigurasi apache, restart service apache httpd seperti berikut
# service httpd restart
Selanjutnya agar service httpd diaktifkan saat boot lakukan perintah berikut:
# chkconfig httpd on
Sekarang reverse proxy sudah selesai Anda setup.

0 komentar:

Posting Komentar