reverse proxy teknology

Kalo ngomongin tentang teknologi “Backend / Server Side Programming” memang gak akan ada abisnya, teknologi jaringan yang satu ini penting di ketahui bagi seorang programmer backend yaitu Reverse Proxy dan Load Balancing.

Untuk Reverse proxy dan Load balancing dapat di-implementasi-kan di web-server sabagai berikut:

  • Nginx
  • Apache Httpd
  • Apache apache2
  • Apache Tomcat
  • Dan masih banyak lagi, hampir semua web server memiliki fitur reverse proxy.

Jadi misalnya saya punya aplikasi dengan mapping seperti berikut:

  • /auth aplikasi untuk authentication ini running single instance pada host tcp 192.168.2.100:8080
  • /registration aplikasi untuk pendaftar ini running di beberapa host dan menggunakan load balancer karena di module ini yang paling banyak request
    • tcp 192.168.1.100:8080
    • tcp 192.168.1.101:8080
    • tcp 192.168.1.102:8080
    • tcp 192.168.1.103:8080
    • tcp 192.168.1.104:8080
  • /resource aplikasi untuk resource management ini running di 2 host karena requestnya tidak telalu banyak seperti module registration dan menggunakan load balancer seperti berikut:
    • tcp 192.168.3.100:8080
    • tcp 192.168.3.101:8080

Nah gambaran akhirnya seperti ini kurang lebih:

arch application with proxy

Jadi reverse proxy / load balancer nya sebagai firewall untuk interaksi aplikasi client atau istilah lainnya frontend dengan aplikasi backend-nya.

Ok sekarang kita setup dulu environtment-nya misalnya networkingnya seperti berikut:

network plan

Jadi setiap server harus membuka port 8080 supaya bisa di remote access oleh web-server yang akan melakukan reverse-proxy.

Check network is tcp bukan tcp6

netstat -na | grep "8080"
## output
# tcp   0   0 127.0.0.1:8080   0.0.0.0:*   LISTEN

Menggunakan iptables

sudo iptables -I INPUT 1 -i eth0 -p tcp --dport 8080 -j ACCEPT

Menggunakan firewalld

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Setelah di buka portnya sekarang kita install httpd / apache2 di server.

Install apache2

Web server apache2 adalah package untuk Debian, Ubuntu dan turunanya berikut adalah cara installnya:

sudo apt-get install apache2

dan berikut adalah configurasi reverse proxy, modif file /etc/apache2/sites-enabled/001-default.conf tambahkan seperti berikut:

Nah sekarang tinggal restart aja web-server apache2 dengan perintah berikut:

## reload configuration without restart
/etc/init.d/apache2 reload

## if not working then restart apache2
/etc/init.d/apache2 restart

Install httpd

Web server httpd adalah bawaan package di Redhat, Fedora, Centos dan turunannya, berikut cara installnya:

# install on centos / rhel7
yum install httpd

# install on fedora
dnf install httpd

dan berikut adalah configurasi reverse proxy, modif file /etc/httpd/conf/httpd.conf tambahkan di akhir baris dengan script seperti berikut:

Nah sekarang tinggal restart aja web-server httpd servicenya dengan perintah berikut:

sudo apachectl restart