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 serverX-Real-IP→ meneruskan IP client asliX-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.