Apa yang bisa kami bantu?

A. Pendahuluan

Reverse proxy adalah server yang berada di depan web server yang bertugas meneruskan request client(misalnya web browser) ke web server tersebut. Reverse proxy biasanya diterapkan untuk membantu meningkatkan security, speed dan realibility. 

Pada artikel kali ini kita akan mencoba membangun reverse proxy menggunakan nginx dan apache dengan multi node, artinya reverse proxy dan web server akan berada di server yang berbeda. 

B. Konfigurasi

  1. Instance Reverse Proxy 
    1. IP Public 103.93.56.xxx 
    2. OS Ubuntu 20.04 
  2. Instance Web Server 
    1. IP Public 103.93.58.xxx 
    2. OS Ubuntu 20.04

Pastikan anda telah memiliki 2 instance/vm yang akan digunakan sebagai reverse proxy dan web server. Pada artikel ini kmai hanya akan membahas cara melakukan setup reverse proxy dengan nginx & apache saja, artinya kami anggap anda telah memiliki website yang sudah di deploy dan siap di proxy kan. Contoh nya disini kami akan menggunakan website wordpress yang di deploy ke VM yang telah terinstall LEMP Stack https://kb.biznetgio.com/id_ID/neo-web-hosting/instalasi-lemp-stack-di-ubuntu-2004-lts 

Konfigurasi Reverse Proxy Nginx 

Pertama kita akan mencoba melakukan setup reverse proxy dengan Nginx, jadi pastikan system anda telah di update terlebih dahulu, jalankan command 

$ sudo apt update
$ sudo apt upgrade –y 

Jika sudah selesai update, selanjutnya install nginx dan psatikan setelah di install, nginx nya telah berjalan 

$ sudo apt install nginx –y 
$ sudo systemctl start nginx 
$ systemctl status nginx 

Pastikan status nginx nya sudah running seperti berikut 

Selanjutnya buat server block yang akan digunakan sebagai reverse proxy yang mengarah pada masing-masing website 

$ sudo vim /etc/nginx/conf.d/reverse-proxy.conf 

Kemudian masukkan konfigurasi berikut : 

server { 

    listen 80; 

    server_name nginx.domain-anda; 

    location / { 

    proxy_redirect off; 

    proxy_set_header Host $host; 

    proxy_set_header   X-Real-IP        $remote_addr; 

    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 

    proxy_set_header Accept-Encoding ""; 

    proxy_pass http://103.93.58.xxx; 

    } 

Pada konfigurasi diatas, yang perlu di perhatikan adalah bagian server_name dan proxy_pass yang dimana  

  • server_name digunakan untuk mendefinisikan domain atau sub domain yang anda gunakan, dan pastikan domain sudah di pointing ke A record IP Instance anda

  • proxy_pass digunakan untuk mendefinisikan dimana web server nya berada, pada bagian ini anda dapat mengisinya dengan IP/Domain dan bisa di tambahkan port juga, pada contoh kali ini web server kami berjalan di port 80, oleh karena itu kami tidak perlu mendefinisikan port nya karena secara default request akan menggunakan port 80


Simpan konfigurasi file nya dan cek apakah terdapat error pada konfigurasi yang sudah di tambahkan 

$ sudo nginx –t 

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful 

Pastikan output nya sudah OK dan tidak terdapat error seperti diatas. Jika sudah tidak terdapat error, lakukan restart pada nginx nya untuk menerapkan konfigurasi yang sudah di tambahkan sebelumnya 

$ sudo systemctl restart nginx 

Selanjutnya akhes subdomain atau domain yang sudah di tambahkan pada server_name sebelumnya, dan pastikan tampilan nya sama dengan yang seharus nya di tampilkan oleh web server, dalam kasus ini karena pada web server kami menjalankan wordpress maka pastikan wordpress nya dapat tampil. 

 

Bisa dilihat jika kita akses saat ini wordpress nya sudah tampil, dan perhatikan pada remote address disana yang tertera adalah IP Reverse Proxy, bukan IP Web Server.

Konfigurasi Reverse Proxy Apache

Sebelumnya kita telah mencoba reverse proxy dengan Nginx, selanjutnya kita akan coba menggunakan Apache. Sama seperti sebelumnya pastikan telah melakukan update pada Instance anda 

$ sudo apt update
$ sudo apt upgrade –y 

Kemudian lakukan installasi apache dengan command : $ sudo apt install apache2 –y 

Jika sudah selesai melakukan installasi, anda perlu mengaktifkan beberapa module agar apache bisa digunakan sebagai reverse proxy 

$ sudo a2enmod proxy 
$ sudo a2enmod proxy_http 
$ sudo a2enmod proxy_balancer 
$ sudo service apache2 restart
 

Selanjutnya buat virtualhost yang akan digunakan untuk menyimpan konfigurasi reverse proxy nantinya, jalankan command : $ vim /etec/apache2/ sites-available/reverse-proxy.conf 

Dan masukkan konfigurasi berikut : 

<VirtualHost *:80> 

ProxyPreserveHost On 

ProxyRequests Off 

AllowEncodedSlashes NoDecode 

ServerName apache.task.my.id 

ProxyPass / http://103.93.58.xxx/ 

ProxyPassReverse / http://103.93.58.xxx/ 

</VirtualHost> 

Sama seperti sebelumnya, masukkan nama domain anda pada bagian ServerName, dan pada bagian ProxyPass & ProxyPassReverse isikan dengan IP atau domain tempat web server anda berada. 

Selanjutnya enable virtualhost yang sudah dibuat dengan command : $ sudo a2ensite reverse-proxy dan terakhir restart service apache : $ sudo systemctl restart apache2

Lakukan verifikasi dengan mengunjungi domain yang sudah di masukkan ke virtualhost sebelumnya dan pastikan wordpress dapat tampil tanpa kendala 


Pada capture diatas, bisa kita pastikan jika wordpress sudah dapaty diakses dan sama seperti sebelumnya remote address juga telah mengarah ke IP Reverse Proxy. 

Selamat! Anda sudah bisa Konfigurasi Reverse Proxy Nginx dan Apache. Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.