Apa itu Reverse Proxy?
Reverse proxy adalah server yang menerima request dari client dan meneruskannya ke backend server. Client tidak tahu server mana yang sebenarnya melayani request.
Manfaat Reverse Proxy
- SSL termination — Handle HTTPS di proxy, HTTP ke backend
- Load balancing — Distribusi traffic ke beberapa server
- Caching — Cache response untuk mengurangi beban backend
- Security — Sembunyikan backend dari internet langsung
Nginx sebagai Reverse Proxy
server {
listen 80;
server_name myapp.com;
location / {
proxy_pass http://localhost:3000;
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;
}
# WebSocket support
location /ws {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Load Balancing
# Definisi upstream (grup server)
upstream backend {
# Round-robin (default)
server 10.0.0.1:3000;
server 10.0.0.2:3000;
server 10.0.0.3:3000;
}
# Algoritma lain:
upstream backend_weighted {
server 10.0.0.1:3000 weight=3; # 3x lebih banyak traffic
server 10.0.0.2:3000 weight=1;
}
upstream backend_iphash {
ip_hash; # Client selalu ke server yang sama
server 10.0.0.1:3000;
server 10.0.0.2:3000;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}