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
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
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
Post a Comment