Tutorial Reverse Proxy dengan SSL Let’s Encrypt

Tutorial Reverse Proxy dengan SSL Let’s Encrypt

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.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *