Cara Setup Reverse Proxy Nginx + SSL Let’s Encrypt

Dalam arsitektur server modern, reverse proxy sering digunakan untuk meneruskan request dari client ke backend service. Salah satu software yang paling populer untuk reverse proxy adalah Nginx karena ringan, cepat, dan mudah dikonfigurasi.

Pada artikel ini kita akan membahas cara setup Reverse Proxy menggunakan Nginx sekaligus mengaktifkan SSL gratis dari Let’s Encrypt.

Setup ini sering digunakan untuk:

  • Web application
  • API server
  • Dashboard monitoring
  • Microservices

Arsitektur yang Akan Digunakan

Contoh arsitektur:

Internet

Nginx Reverse Proxy (HTTPS 443)

Backend Application (localhost:3000)

Client akan mengakses domain melalui HTTPS, kemudian Nginx meneruskan request ke backend server.

1. Install Nginx

Update repository terlebih dahulu:

sudo apt update

Install nginx:

sudo apt install nginx -y

Cek apakah nginx sudah berjalan:

systemctl status nginx

2. Install Certbot (Let’s Encrypt)

Untuk mendapatkan SSL gratis dari Let’s Encrypt kita menggunakan Certbot.

Install certbot dan plugin nginx:

sudo apt install certbot python3-certbot-nginx -y

Cek versi certbot:

certbot --version

3. Membuat Konfigurasi Reverse Proxy

Buat file konfigurasi baru di nginx.

sudo nano /etc/nginx/sites-available/reverse-proxy

Isi konfigurasi berikut:

server {
listen 80;
server_name example.com; location / {
proxy_pass http://127.0.0.1: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;
}
}

Penjelasan:

  • proxy_pass → alamat backend server
  • X-Real-IP → meneruskan IP client asli
  • X-Forwarded-For → informasi chain proxy

4. Aktifkan Konfigurasi

Aktifkan konfigurasi nginx:

sudo ln -s /etc/nginx/sites-available/reverse-proxy /etc/nginx/sites-enabled/

Test konfigurasi:

sudo nginx -t

Reload nginx:

sudo systemctl reload nginx

Sekarang domain sudah bisa mengakses backend melalui HTTP.

5. Mengaktifkan SSL Let’s Encrypt

Sekarang kita aktifkan HTTPS.

Jalankan perintah berikut:

sudo certbot --nginx -d example.com

Ikuti proses verifikasi domain.

Biasanya certbot akan:

  • mengambil SSL certificate
  • mengupdate konfigurasi nginx
  • mengaktifkan redirect HTTPS otomatis

Contoh hasil konfigurasi setelah SSL aktif:

server {
listen 443 ssl;
server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / {
proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

6. Test HTTPS

Sekarang coba akses:

https://example.com

Jika berhasil, website akan menggunakan SSL certificate dari Let’s Encrypt.

7. Auto Renewal SSL

SSL Let’s Encrypt berlaku selama 90 hari, tetapi certbot sudah menyediakan auto renewal.

Cek cron job renewal:

sudo certbot renew --dry-run

Jika tidak ada error, maka SSL akan otomatis diperpanjang.

Kesimpulan

Dengan menggunakan Nginx sebagai Reverse Proxy dan Let’s Encrypt untuk SSL, kita dapat dengan mudah membuat server yang:

  • lebih aman dengan HTTPS
  • fleksibel untuk berbagai backend service
  • mudah di scale untuk production environment

Setup ini sangat umum digunakan untuk berbagai aplikasi seperti web apps, API gateway, dan microservices.

Leave a Reply

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