Memahami Proxy dan Reverse Proxy

Dulu saya kira proxy dan reverse proxy itu cuma istilah sederhana dalam ranah IT. Ternyata setelah sering berkutat di server, justru ini salah satu komponen paling penting.

Awalnya saya baru benar-benar paham ketika harus menyembunyikan backend aplikasi dan cuma mau expose satu port saja ke publik. Proxy itu bukan sekadar “perantara”, tapi alat kontrol lalu lintas.

Di artikel hari ini saya jelaskan dengan bahasa sederhana + praktik sederhana yang bisa diikuti.


Pengertian Proxy

Secara sederhana proxy itu perantara dari client ke internet.

Alurnya kurang lebih seperti ini: 

Client → Proxy → Internet

Biasanya dipakai untuk:

  • Filtering akses
  • Logging
  • Caching
  • Kontrol traffic
  • Anonimisasi IP

Contohnya seperti saat di kantor, kadang kita tidak bisa akses website tertentu. Itu biasanya karena ada proxy di depan jaringan.


Lalu apa bedanya dengan Reverse Proxy?

Kalau dari sisi bahasa sih hanya kebalikannya reverse proxy


Pengertian Reverse Proxy

Reverse proxy singkatnya adalah perantara dari internet ke server backend.

Alurnya:

Internet → Reverse Proxy → Backend Server

Kenapa ini penting? Karena saya tidak mau expose backend langsung ke publik.

Contoh kasus nyata yang pernah saya lihat atau saya baca:

  • Aplikasi jalan di port 3000
  • API jalan di port 8080
  • Tapi yang dibuka ke publik cuma port 80/443

Reverse proxy yang mengatur semuanya.


Perbedaan Singkat Proxy dan Reverse Proxy

Proxy

  • Melindungi Client
  • Client mengetahui Proxy
  • Berada di sisi user

Reverse Proxy

  • Melindungi Server
  • Client tidak mengetahui backend
  • Biasanya berada di sisi server


Ini beberapa hal kelebihan reverse proxy yang saya temukan:

1. Bisa Multi App Satu Server

Contoh:

  • domain1.com → port 3000
  • domain2.com → port 8080
  • domain3.com → port 5000

Semua lewat satu reverse proxy.


2. Bisa Tambah SSL Tanpa Ubah Backend

  • Backend tetap HTTP biasa.
  • Reverse proxy di handle HTTPS.

3. Bisa Jadi Load Balancer

Kalau memiliki beberapa backend maka reverse proxy dapat berfungsi sebagai pembagi beban.


Praktik Sederhana (OS Ubuntu 24.04)

Goals nya adalah memakai nginx sebagai reverse proxy.


Install dulu:

$ sudo apt update

$ sudo apt install nginx

Sekarang kita buat simulasi backend sederhana.

Jalankan Python HTTP server di port 3000:

$ python3 -m http.server 3000


Catatan: Disarankan menggunakan server maupun VM lokal, tidak disarankan pada lingkungan produksi.

Sekarang buka browser:

http://ip-server:3000

Sekarang Kita Jadikan Reverse Proxy


Edit file:

$ sudo nano /etc/nginx/sites-available/reverse

Isi dengan:

server {

        listen 80;

        server_name _;

        location / {

            proxy_pass http://127.0.0.1:3000;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

        }

}


Aktifkan:

$ sudo ln -s /etc/nginx/sites-available/reverse /etc/nginx/sites-enabled/

$ sudo nginx -t

$ sudo systemctl restart nginx


Sekarang akses:

http://ip-server

Bukan lagi port 3000, tapi port 80.

Backend tetap jalan di 3000.

Kurang lebih seperti ini yang diakses oleh User

  • User → Nginx (port 80)
  • Nginx → Backend (port 3000)
  • Backend → Nginx
  • Nginx → User
Sehingga User tidak akan pernah berinteraksi langsung dengan Back end server.

Waktu Penggunaan Reverse Proxy

Pakai reverse proxy kalau:

  • Mau sembunyikan backend
  • Mau pakai SSL
  • Mau multi aplikasi satu server
  • Mau kontrol request
  • Mau limit request (rate limit)

Kesalahan yang Umum nya dilakukan

  • Langsung expose backend ke publik
  • Tidak set header dengan benar
  • Lupa buka firewall
  • Tidak cek log nginx saat error

Dan ingat, kunci debugging reverse proxy di nginx itu satu: /var/log/nginx/error.log

Proxy itu alat kontrol traffic.

Reverse proxy itu gerbang depan server.

Kalau kamu ingin naik level dari sekadar “bisa install aplikasi” menjadi “mengerti arsitektur server”, memahami reverse proxy itu menjadi suatu kewajiban.

Karena hampir semua sistem modern di internet hari ini pakai reverse proxy.

Comments

Popular posts from this blog

Belajar Zimbra Mail Server

Mendalami tentang Linux (Sejarah dan Pelopor)