Nginx adalah salah satu server web terpopuler di dunia karena penggunaan sumber dayanya yang ringan dan keandalannya saat dimuat. Dalam penerapannya, Nginx sering digunakan sebagai load balancer atau reverse proxy untuk meningkatkan keamanan dan membuat aplikasi lebih tangguh. Dalam hubungannya dengan back-end web Go, Nginx dapat menyajikan aplikasi web yang kuat dan cepat.
Dalam tutorial ini, Anda akan membuat aplikasi web Hello World di Go dan menyebarkannya di server menggunakan Nginx sebagai reverse proxy.
Buat folder baru bernama go-webhello, lalu inisialisasi Go Module di dalamnya.
mkdir go-helloweb
cd go-helloweb
go mod init github.com/{{akun-anda}}/go-helloweb
main.go
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World")
})
http.HandleFunc("/greet/", func(w http.ResponseWriter, r *http.Request) {
name := r.URL.Path[len("/greet/"):]
fmt.Fprintf(w, "Hello %s\n", name)
})
http.ListenAndServe(":9990", nil)
}
go run .
Lalu buka pada web browser http://localhost:9990
Tutup aplikasi yang sedang berjalan(Ctrl+d) lalu build main.go
go build main.go
Pada langkah ini, Anda akan membuat file unit systemd untuk menjaga aplikasi Anda tetap berjalan di latar belakang bahkan ketika pengguna logout dari server. Hal ini akan membuat aplikasi Anda tetap berjalan, membawa Anda selangkah lebih dekat ke penerapan tingkat produksi.
Pertama, buat file baru di direktori /lib/systemd/system bernama go-helloweb.service menggunakan nano atau editor teks pilihan Anda:
[Unit]
Description=go-helloweb
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/user/projects/go-helloweb/main
[Install]
WantedBy=multi-user.target
Simpan lalu jalankan.
sudo service go-helloweb start
sudo service go-helloweb status
Aplikasi sudah berjalan, selanjutnya cek browser http://localhost:9990
Pada langkah ini, Anda akan membuat blok server Nginx dan menyiapkan reverse proxy Nginx untuk mengekspos aplikasi Anda ke internet.
Pertama, buat dan tambahkan baris berikut ke dalam file /etc/nginx/site-availables/go-helloweb.conf
server {
listen 8090;
server_name _;
location / {
proxy_pass http://localhost:9990;
}
}
sudo ln -s /etc/nginx/sites-available/go-helloweb.conf /etc/nginx/sites-enabled/go-helloweb.conf
sudo nginx -s reload
Aplikasi sudah berjalan, selanjutnya cek browser http://localhost:8090