Dalam arsitektur server modern, Reverse Proxy sering digunakan untuk meningkatkan keamanan, performa, dan fleksibilitas layanan. Reverse proxy biasanya ditempatkan di depan server aplikasi untuk menangani request dari client sebelum diteruskan ke backend server.
Teknologi ini banyak digunakan dalam berbagai infrastruktur seperti web server, API service, hingga mail system. Pada artikel ini kita akan membahas apa itu reverse proxy, manfaatnya, dan contoh implementasinya.
Apa Itu Reverse Proxy
Reverse proxy adalah server yang bertindak sebagai perantara antara client dan backend server. Alurnya biasanya seperti ini:
Client → Reverse Proxy → Backend Server
Client tidak langsung terhubung ke backend server, melainkan melalui reverse proxy terlebih dahulu. Contoh software yang sering digunakan sebagai reverse proxy:
- Nginx
- Apache
- HAProxy
- Traefik
- Caddy
Fungsi Reverse Proxy
Beberapa fungsi utama reverse proxy antara lain:
1. Load Balancing
Reverse proxy dapat mendistribusikan request ke beberapa backend server.
Contoh:
Client
↓
Reverse Proxy
↓
Server 1
Server 2
Server 3
Dengan cara ini beban server dapat dibagi sehingga performa lebih stabil.
2. Meningkatkan Keamanan
Reverse proxy dapat menyembunyikan IP address backend server dari client. Sehingga client hanya mengetahui server reverse proxy saja. Hal ini dapat membantu:
- Mengurangi risiko serangan langsung ke server backend
- Menyaring request berbahaya
3. SSL Termination
Reverse proxy juga sering digunakan untuk menangani SSL/TLS encryption. Alurnya biasanya seperti ini:
Client (HTTPS)
↓
Reverse Proxy (SSL Termination)
↓
Backend Server (HTTP)
Dengan cara ini backend server tidak perlu menangani proses enkripsi SSL.
4. Caching
Beberapa reverse proxy dapat menyimpan cache dari response server sehingga request berikutnya bisa dilayani lebih cepat tanpa harus mengakses backend server.
Contoh Reverse Proxy Menggunakan Nginx
Salah satu software yang paling populer untuk reverse proxy adalah Nginx.
Install Nginx:
Ubuntu / Debian
sudo apt install nginx
Contoh Konfigurasi Reverse Proxy
Edit file konfigurasi:
sudo nano /etc/nginx/sites-available/reverse-proxy
Isi konfigurasi:
server {
listen 80;
server_name example.com; location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Penjelasan:
proxy_pass→ alamat backend serverproxy_set_header→ meneruskan informasi client ke backend
Aktifkan Konfigurasi
sudo ln -s /etc/nginx/sites-available/reverse-proxy /etc/nginx/sites-enabled/
Lalu reload nginx:
sudo systemctl reload nginx
Sekarang request ke example.com akan diteruskan ke backend server di port 3000.
Contoh Arsitektur Reverse Proxy
Contoh implementasi di production:
Internet
↓
Nginx Reverse Proxy
↓
Application Server
↓
Database Server
Dengan arsitektur ini, server aplikasi dan database tidak langsung terekspos ke internet.
Kesimpulan
Reverse proxy merupakan komponen penting dalam arsitektur server modern. Dengan menggunakan reverse proxy, kita bisa mendapatkan berbagai keuntungan seperti:
- meningkatkan keamanan
- melakukan load balancing
- menangani SSL termination
- meningkatkan performa melalui caching
Software seperti Nginx atau HAProxy sering digunakan untuk mengimplementasikan reverse proxy pada berbagai layanan seperti web server, API gateway, dan microservices architecture.