Berikut adalah panduan lengkap langkah demi langkah untuk melakukan konfigurasi Reverse Proxy menggunakan Nginx yang diarahkan ke aplikasi di port 3030, menggunakan domain devrama.my.id, dan diamankan dengan SSL gratis dari Let's Encrypt.
🛠️ Langkah 1: Persiapan Awal (Prerequisites)
Sebelum memulai, pastikan:
Domain devrama.my.id sudah diarahkan (A Record) ke IP Publik Server/VPS kamu melalui DNS Management (misalnya via Cloudflare/IdCloudHost/Niagahoster).
Aplikasi kamu sudah berjalan di port 3030 (bisa dicek dengan perintah curl localhost:3030).
🚀 Langkah 2: Install Nginx dan Certbot
Masuk ke server kamu via SSH, lalu jalankan perintah berikut untuk memperbarui sistem dan menginstal Nginx serta Certbot (alat pengelola SSL Let's Encrypt).
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y
Pastikan Nginx sudah berjalan:
sudo systemctl start nginx
sudo systemctl enable nginx
📄 Langkah 3: Konfigurasi Reverse Proxy Nginx
Kita akan membuat file konfigurasi baru khusus untuk domain kamu.
Hapus default Nginx port 80
sudo rm /etc/nginx/sites-enabled/default
Buat file konfigurasi baru di direktori Nginx:
sudo nano /etc/nginx/sites-available/devrama.my.id
Salin dan tempel kode berikut ke dalam file tersebut (konfigurasi HTTP port 80 untuk awal):
server {
listen 80;
server_name devrama.my.id;
location / {
proxy_pass http://127.0.0.1:3030; # Mengarahkan trafik ke port aplikasi
proxy_http_version 1.1;
# Header penting agar aplikasi tahu IP asli dari pengunjung
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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;
}
}
Simpan dan keluar (Tekan CTRL + O, lalu Enter, kemudian CTRL + X).
Aktifkan konfigurasi dengan membuat symlink ke folder sites-enabled:
sudo ln -s /etc/nginx/sites-available/devrama.my.id /etc/nginx/sites-enabled/
Tes apakah konfigurasi Nginx sudah benar dan tidak ada eror syntax:
sudo nginx -t
Jika muncul pesan nginx: configuration file ... test is successful, artinya aman!
Restart Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx
🔒 Langkah 4: Install SSL Let's Encrypt
Sekarang, kita akan menggunakan Certbot untuk mengamankan domain dengan SSL (HTTPS). Kerennya, Certbot akan otomatis mengubah file konfigurasi Nginx kita tadi agar mendukung HTTPS.
Jalankan perintah Certbot berikut:
sudo certbot --nginx -d devrama.my.id
Certbot akan menanyakan beberapa hal saat pertama kali dijalankan:
Email: Masukkan email aktifmu (untuk notifikasi jika SSL akan kedaluwarsa).
Terms of Service: Ketik A lalu Enter untuk menyetujui.
Share Email: Ketik Y atau N (bebas).
Redirect HTTP to HTTPS: Jika muncul pilihan untuk mengalihkan otomatis trafik HTTP ke HTTPS, pilih opsi Redirect (biasanya opsi nomor 2).
Jika berhasil, kamu akan melihat pesan sukses:
Congratulations! You have successfully enabled HTTPS on https://devrama.my.id
🔄 Langkah 5: Otomatisasi Perpanjangan SSL (Auto-Renewal)
SSL Let's Encrypt hanya berlaku selama 90 hari. Namun, Certbot secara otomatis membuat cron job di server untuk memperbaruinya sebelum kedaluwarsa.Untuk memastikan fitur auto-renewal ini berfungsi dengan baik, kamu bisa mengujinya dengan perintah:
sudo certbot renew --dry-run
Jika tidak ada eror, maka SSL kamu akan diperbarui otomatis selamanya tanpa perlu kamu urus lagi secara manual.
Selesai!
Sekarang kamu bisa membuka browser dan mengakses https://devrama.my.id. Nginx akan otomatis menerima trafik aman (HTTPS) di port 443, meneruskannya ke aplikasi internal kamu di port 3030, dan mengembalikan responsnya ke pengguna dengan mulus.
Top comments (0)