Apa Itu Reverse Proxy?
Reverse proxy adalah server yang menerima permintaan dari klien dan meneruskannya ke server backend. Reverse proxy berguna untuk:
- Menyembunyikan IP dan detail backend.
- Menyediakan SSL/HTTPS untuk layanan yang tidak mendukungnya langsung.
- Mengelola banyak layanan di satu IP publik dengan domain/subdomain berbeda.
Contoh: Anda punya aplikasi di localhost:3000
, dan ingin mengaksesnya dari internet melalui https://app.domainanda.com
.
Tools yang Digunakan
- Nginx (web server/reverse proxy populer)
- Certbot (untuk mendapatkan SSL dari Let’s Encrypt)
- Domain/Subdomain aktif (misal:
app.domainanda.com
) - Port 80 dan 443 terbuka di firewall
Langkah 1: Instal Nginx dan Certbot
Debian/Ubuntu
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y
Langkah 2: Konfigurasi Nginx sebagai Reverse Proxy
Contoh: Proxy dari app.domainanda.com
ke localhost:3000
Buat file konfigurasi:
sudo nano /etc/nginx/sites-available/app.domainanda.com
Isi konfigurasi:
server {
Aktifkan konfigurasinya:
server {
listen 80;
server_name app.domainanda.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;
}
}
Langkah 3: Dapatkan SSL dari Let’s Encrypt
Jalankan Certbot:
sudo certbot --nginx -d app.domainanda.com
Certbot akan:
- Memverifikasi domain Anda.
- Mengubah konfigurasi Nginx menjadi HTTPS.
- Mengatur auto-renewal SSL.
Jika sukses, Anda akan melihat:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/app.domainanda.com/fullchain.pem
Langkah 4: Uji HTTPS dan Auto-Renewal
Tes HTTPS
Buka: https://app.domainanda.com
Cek apakah browser menampilkan ikon gembok (SSL aktif).
Tes perpanjangan otomatis
Let’s Encrypt hanya berlaku 90 hari, tapi Certbot otomatis memperpanjang.
sudo crontab -e
0 2 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
Anda bisa tes manual:
sudo certbot renew --dry-run
Tips Tambahan
- Jika Anda menggunakan Cloudflare, pastikan SSL-nya di-set ke Full (Strict) dan port 80/443 terbuka.
- Pastikan DNS
app.domainanda.com
mengarah ke IP publik server Anda. - Untuk banyak subdomain, ulangi langkah dengan domain berbeda.
Penutup
Dengan setup reverse proxy dan SSL Let’s Encrypt, Anda dapat dengan mudah mengamankan layanan backend Anda dan membuatnya dapat diakses dari mana saja melalui domain yang Anda miliki. Solusi ini fleksibel, murah (gratis!), dan sangat umum dipakai di banyak server produksi.
Jika Anda ingin panduan versi Docker atau untuk web server selain Nginx (seperti Caddy atau Apache), saya juga bisa bantu.