Menggunakan Nginx sebagai Reverse Proxy untuk Aplikasi Go
Kalau kamu bikin aplikasi web dengan Go, biasanya aplikasinya jalan langsung di port tertentu, misalnya :8080
. Masalahnya, kalau saya ingin aplikasi ini bisa diakses lewat domain (misalnya yourdomain.com
) dengan port standar :80
atau bahkan :443
(HTTPS), saya butuh “penengah”. Nah, di sinilah Nginx berperan sebagai reverse proxy.
Dengan Nginx di depan aplikasi Go, kita bisa dapat banyak keuntungan:
- Request dari user lewat dulu ke Nginx sebelum diteruskan ke Go.
- Bisa tambah SSL (HTTPS) dengan gampang.
- Bisa bagi-bagi beban (load balancing) kalau aplikasinya jalan di beberapa instance.
- Nginx juga lebih efisien untuk melayani file statis (gambar, CSS, JS, dll).
Di artikel ini, saya bahas cara setup-nya langkah demi langkah.
1. Instal Nginx
Kalau belum ada Nginx di server, install dulu. Di Ubuntu/Debian:
sudo apt update
sudo apt install nginx
2. Buat Konfigurasi Reverse Proxy
kita perlu bikin file konfigurasi untuk aplikasi Go. Misalnya:
sudo nano /etc/nginx/sites-available/myapp
Isi dengan konfigurasi:
server {
listen 80;
server_name yourdomain.com; # ganti dengan domain atau IP server kamu
location / {
proxy_pass http://localhost:8080;
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;
}
}
Konfigurasi ini artinya: semua request ke yourdomain.com
akan diteruskan ke aplikasi Go yang jalan di localhost:8080
.
3. Aktifkan Konfigurasi
Supaya konfigurasi terbaca Nginx, buat symlink ke folder sites-enabled
:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
4. Uji Konfigurasi
Sebelum reload Nginx, tes dulu apakah config valid:
sudo nginx -t
Kalau ada pesan “syntax is ok” dan “test is successful”, berarti aman.
5. Reload Nginx
Jalankan:
sudo systemctl reload nginx
Sekarang Nginx sudah siap jadi pintu depan aplikasi Go kamu.
6. Akses Aplikasi
Coba buka http://yourdomain.com
di browser. Kalau konfigurasi benar, request akan lewat ke Nginx dulu, lalu diteruskan ke aplikasi Go di port :8080
.
(Opsional) Tambah HTTPS dengan Let’s Encrypt
Supaya lebih aman, kamu bisa aktifkan SSL gratis dari Let’s Encrypt. Dengan Certbot, setup HTTPS biasanya cukup satu perintah:
sudo certbot --nginx -d yourdomain.com
Ikuti instruksi di layar, dan selesai—aplikasi Go kamu sekarang bisa diakses lewat HTTPS.