Pengertian Reverse Proxy dan Cara Kerjanya

Dalam dunia administrator system dan jaringan tentu kita asing dengan Proxy. Contekan ini saya tulis untuk menjelaskan tentang salah satu Proxy yaitu Reverse Proxy. Pertama kali mengenal istilah Reverse Proxy ketika di kantor saya ada banyak project untuk mempublish aplikasi. Aplikasi yang di publish ke internet saat itu berupa web service yang mana saat itu semua IP Publik yang kami punya sudah terpakai. Setelah berdiskusi dengan beberapa kenalan dan searching di google, akhirnya ketemu solusinya dengan menggunakan Nginx sebagai Reverse Proxy.  Untuk lebih detailnya tentang pengertian Reverse Proxy dan cara kerjanya, saya jelaskan berikut.

Pengertian Reverse Proxy

Reverse proxy merupakan salah satu jenis proxy yang berfungsi untuk meneruskan request dari client ke server. Reverse proxy berada di antara client dan server yang bertugas untuk menjamin pertukaran data antara client dan server berjalan dengan lancar. Dalam proses pertukaran data antara client dan server, Reverse Proxy memberikan keamanan dan juga melakukan kompresi data sehingga proses pertukaran berjalan lebih cepat. Biasanya Reverse Proxy di terapkan pada web server seperti Apache dan Nginx.

reverse proxy

Gambar Penerapan Reverse Proxy

Gambar di atas merupakan salah satu penerapan Reverse Proxy, yang bertujuan agar beberapa server web kita bisa di akses dari jaringan internet. Contoh di atas menunjukan bahwa Reverse Proxy bertugas untuk meneruskan request dari beberapa client yang mengakses beberapa web server dengan domain yang berbeda. Dengan kemampuan tersebut Reverse Proxy banyak di fungsikan sebagai pengganti NAT.

Baca Juga : Pengertian NAT, Jenis, dan Manfaatnya pada Jaringan Komputer.

Secara umum ada tiga alasan kenapa kita perlu menggunakan Reverse Proxy, alasan tersebut adalah:

  1. Keamanan

Reverse Proxy dapat memberikan keamanan pada server-server yang berada di belakangnya dari serangan berbahaya (cyber attack). Selain itu Reverse Proxy juga dapat di gunakan menjadi SSL Termination, sehingga dapat melakukan enkripsi pada proses pertukaran data antara client dan server.

  1. Kecepatan

Reverse Proxy membantu menyeimbangkan load antara server-server yang berada di belakangnya sehingga proses transfer data berlangsung stabil. Selain itu Reverse Proxy juga menyediakan caching agar upaya memproses data bisa berjalan lebih optimal dan melakukan kompres membuat transfer data lebih cepat.

  1. Keandalan

Dengan  menjalankan load balancing pada Reverse Proxy, server-server yang berada di belakangnya di harapkan tidak mengalami kelebihan beban yang akan mengakibatkan server menjadi down.

Cara Kerja Reverse Proxy

Setelah kita memahami Pengertian Reverse Proxy, kita lanjutkan dengan cara kerjanya. Reverse Proxy berfungsi untuk meneruskan request dari client ke server dan sebaliknya. Dalam hal ini Reverse proxy bertugas menjadi perantara antara client dan server. Pada contoh gambar Penerapan Reverse Proxy di atas dapat kita gambarkan cara kerja Reverse Proxy sebagai berikut:

  1. Request :

Client melakukan request untuk mengakses halaman pada web dengan domain hrd.contekankita.com. Request tersebut akan di terima oleh Reverse Proxy yang kemudian akan di terukan ke web server hrd.contekankita.com

  1. Respon:

Setelah request di terima oleh web server, web server akan mengirim respon kepada Reverse Proxy. Oleh Reverse Proxy respon tersebut akan di teruskan ke client yang melakukan request.

Nginx Sebagai Reverse Proxy

Seperti yang saya sebutkan di atas saya menggunakan Nginx sebagai Reverse Proxy. Nginx pertama kali di temukan oleh insinyur Rusia yang bernama Igor Sysoev pada tahun 2002, versi yang paling awal dari Nginx ini adalah 0.1.0 yang dirilis pada  tahun 2004. Pada tahun 2011 Igor Sysoev mendirikan Perusahaan  dan memberikan layanan berbayar bagi pengguna Nginx, dan pada tahun 2019 perusahan  F5 mengakusisi perusahan Nginx. Sebagai Reverse Proxy tentunya Nginx mempunyai keunggulan dan kekurangan. Berikut beberapa keunggulan dan kekurangan dari Nginx.

Keunggulan Nginx

  1. Nginx mempunyai tool yang multi fungsi

Selain sebagai web server Nginx mempunyai banyak kegunaan, bisa sebagai load balancer, reverse proxy, ssl termination, dan cache konten. Seluruh konfigurasi ini hanya terpusat pada satu aplikasi, sehingga mudah untuk di monitoring dan maintenance jika terjadi suatu masalah.

  1. Nginx dapat menggantikan hardware load balancer

Nginx memiliki kemampuan melakukan load balancing dengan banyak method (first, round robin, dll). Nginx sebagai software yang open source, akan lebih murah dan mudah untuk dikonfigurasi dibanding dengan hardware load balancer sendiri.

  1. Mudah untuk di pelajari dan di konfigurasi

Konfigurasi Nginx mudah untuk dilakukan dan terjamin keamanannya. Jika kita mengalami kesulitan dalam menggunakan Nginx ini, kita bisa melihat tutorial, webinar, dan dokumentasi yang lengkap untuk kita pelajari. Jika dirasa masih saja kesulitan, kita bisa mencoba menggunakan Nginx Plus, sehingga kita akan mendapat bantuan untuk mendiagnosis kesulitan yang terjadi.

  1. Nginx akan terus di kembangkan

Nginx bisa bekerja di berbagai macam protokol, seperti HTTPS, TCP, UDP, SMTP, IMAP dan POP3. Sampai sekarang pun Nginx ini masih akan terus dikembangkan dengan seriusnya hingga Nginx ini akan berada pada garis terdepan pengembangan web modern. Nginx ini juga berencana untuk menyempurnakan fitur-fitur dari pengiriman konten hingga tidak ada lagi pengiriman data cacat.

Kekurangan Nginx

  1. Update yang cukup lama jika di bandingkan dengan webserver lainnya.
  2. Fast CGI yang tidak berfungsi sempurna.
  3. Kadang kala ada masalah pada .htaccess namun hal ini tergantung dari konfigurasi webmasternya sendiri.
  4. Karena termasuk pendatang baru jadi penggunanya masih belum banyak.

Konfigurasi Nginx sebagai Reverse Proxy

Berikut saya contohkan konfigurasi Nginx sebagai Reverse Proxy dengan topologi sesuai gambar berikut.konfig reverse proxy Dengan asumsi kita telah melakukan installasi Nginx pada server (CentOS atau Ubuntu), kita membuat sebuah file ”.conf “ untuk konfigurasi Reverse Proxy . File konfigurasi tersebut pada distribusi Ubuntu dan Debian di simpan di direktori “/etc/nginx/sites-available”, sedangkan pada CentOS di direktori “/etc/nginx/conf.d”. File  konfigurasi yang telah di buat saya asumsikan dengan nama hrd.contekankita.com.conf yang berisi konfigurasi sebagai berikut:

server {
        listen 443 ssl;
        server_name hrd.contekankita.com;
        ssl on;
        ssl_certificate /etc/nginx/ssl-certs/*.contekankita.com.crt;
        ssl_certificate_key /etc/nginx/ssl-certs/*.contekankita.com.key;
        access_log /var/log/nginx/hrd.contekankita.com_access_log;
        error_log /var/log/nginx/hrd.contekankita.com_error_log;

location / {
           proxy_pass http://192.168.0.88;
           proxy_cache_bypass  $http_upgrade;
           proxy_set_header Upgrade             $http_upgrade;
           proxy_set_header Connection        "upgrade";
           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 X-Forwarded-Proto $scheme;
           proxy_set_header X-Forwarded-Host  $host;
           proxy_set_header X-Forwarded-Port  $server_port;

           }

        }

Pada contoh konfigurasi di atas memberitahu Nginx bahwa web server hanya bisa di akses dengan port https (443) dengan nama hrd.contekankita.com. Ketika ada request terhadap halaman web hrd.contekankita.com maka Nginx akan meneruskan request tersebut ke server web server dengan alamat IP 192.168.0.88. Hal ini di jelaskan oleh parameter berikut:

listen 443 ssl;
server_name hrd.contekankita.com;

location / {
proxy_pass http://192.168.0.88;

Konfigurasi tersebut juga menunjukkan Nginx menjadi SSL Termination yang dapat kita lihat pada parameter

ssl on;
ssl_certificate /etc/nginx/ssl-certs/*.contekankita.com.crt;
ssl_certificate_key /etc/nginx/ssl-certs/*.contekankita.com.key;

Sedangkan untuk parameter lain dapat di jelaskan sebagai berikut:

proxy_cache_bypass $http_upgrade

Menetapkan kondisi di mana respons tidak akan diambil dari cache.

proxy_set_header Upgrade $http_upgrade and Connection "upgrade"

Field header ini di perlukan jika aplikasi Anda menggunakan Websockets.

proxy_set_header Host $host

Variabel $host dalam urutan prioritas berikut ini berisi: host name dari baris permintaan, atau host name dari bidang Host request header, atau nama server yang cocok dengan permintaan.

proxy_set_header X-Real-IP $remote_addr

Meneruskan alamat IP jarak jauh pengunjung asli ke server yang di proxy.

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for

Daftar yang berisi alamat IP dari setiap server yang akan di proxy sebelum di kirim ke klien.

proxy_set_header X-Forwarded-Proto $scheme

Ketika di gunakan di dalam server block HTTPS, akan memblokir setiap respons dari HTTP dan akan merutekan ulang menjadi HTTPS.

proxy_set_header X-Forwarded-Host $host

Menentukan host asli yang di minta oleh klien.

proxy_set_header X-Forwarded-Port $server_port 

Menentukan port asli yang di minta oleh klien.

Demikian contekan saya tentang pengertian Reverse Proxy  dan cara kerjanya semoga bisa bermanfaat bagi kita semua…

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *