Tutorial ini menjelaskan cara menyiapkan Nginx reverse proxy untuk subdomain yoursubdomain.example.com ke aplikasi yang berjalan di localhost:9000, lalu mengamankannya dengan SSL/HTTPS menggunakan Certbot dan Let’s Encrypt.
Asumsi#
- Server Linux seperti Ubuntu atau Debian sudah terpasang Nginx.
- Aplikasi berjalan di
localhost:9000pada server yang sama. - DNS record A untuk
yoursubdomain.example.comsudah mengarah ke IP publik server. - Firewall UFW sudah mengizinkan trafik HTTP di port
80dan HTTPS di port443.
Daftar Isi#
- 1. Instal Certbot
- 2. Buka firewall
- 3. Buat konfigurasi reverse proxy
- 4. Aktifkan konfigurasi
- 5. Uji Nginx
- 6. Pasang SSL dengan Certbot
- 7. Verifikasi dan uji akses
- 8. Cek pembaruan otomatis
1. Instal Certbot#
Instal Certbot dan plugin Nginx yang dibutuhkan pada sistem berbasis Debian atau Ubuntu.
sudo apt update
sudo apt install certbot python3-certbot-nginx -y2. Buka firewall#
Jika Anda menggunakan UFW, pastikan profil Nginx sudah diizinkan.
sudo ufw allow 'Nginx Full'
sudo ufw reload3. Buat konfigurasi reverse proxy#
Buat file server block untuk subdomain Anda di direktori sites-available.
sudo nano /etc/nginx/sites-available/yoursubdomain.example.comLalu isi dengan konfigurasi berikut.
server {
listen 80;
listen [::]:80;
server_name yoursubdomain.example.com;
location / {
proxy_pass http://localhost:9000;
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;
}
}Jika aplikasi Anda menerima upload besar, Anda bisa menambahkan client_max_body_size 100M; di dalam blok location sesuai kebutuhan.
4. Aktifkan konfigurasi#
Buat symlink ke sites-enabled agar konfigurasi dipakai oleh Nginx.
sudo ln -s /etc/nginx/sites-available/yoursubdomain.example.com /etc/nginx/sites-enabled/5. Uji Nginx#
Periksa sintaks konfigurasi lalu muat ulang Nginx.
sudo nginx -t
sudo systemctl reload nginxJika tidak ada error, aplikasi Anda seharusnya sudah dapat diakses melalui http://yoursubdomain.example.com.
6. Pasang SSL dengan Certbot#
Jalankan Certbot dengan plugin Nginx dan tentukan subdomain yang ingin diamankan.
sudo certbot --nginx -d yoursubdomain.example.comSaat proses berjalan, Certbot biasanya akan menanyakan:
- Alamat email untuk notifikasi pembaruan dan keamanan.
- Persetujuan terhadap terms of service.
- Opsi berbagi email dengan EFF.
- Opsi redirect HTTP ke HTTPS. Pilih redirect agar trafik selalu memakai HTTPS.
Jika berhasil, Certbot akan memodifikasi konfigurasi Nginx secara otomatis dan menambahkan blok server HTTPS dengan sertifikat Let’s Encrypt.
7. Verifikasi dan uji akses#
Setelah selesai, buka https://yoursubdomain.example.com dan pastikan browser menampilkan koneksi aman.
Jika ingin memastikan konfigurasi Nginx yang baru diterapkan, Anda juga bisa mengecek kembali status service.
sudo systemctl status nginx8. Cek pembaruan otomatis#
Sertifikat Let’s Encrypt berlaku selama 90 hari, tetapi Certbot biasanya sudah menambahkan timer atau cron untuk pembaruan otomatis.
Uji proses perpanjangan dengan mode dry run:
sudo certbot renew --dry-runJika perintah ini selesai tanpa error, pembaruan otomatis Anda sudah dikonfigurasi dengan benar.

