Menghubungkan Hugo dengan Nginx dan LiveReload
Konfigurasi Nginx sebagai proksi songsang

Dalam proses pembangunan laman statik menggunakan Hugo, ada kalanya kita mahu mengaksesnya melalui domain tempatan seperti https://blog-hugo.loc dan pada masa yang sama menikmati ciri LiveReload secara automatik.
Catatan ini menunjukkan cara:
- Mengkonfigurasi
Nginxsebagai proksi songsang (reverse proxy) untuk pelayan pembangunanHugo, - Mengaktifkan sokongan
WebSocketuntukLiveReload, - Menjalankan
Hugodengan parameter sesuai agar kena dengan penggunaan proksiHTTPS.
Konfigurasi Nginx
Snippet untuk LiveReload
/etc/nginx/snippets/livereload.confproxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;Konfigurasi Pelayan “blog-hugo.conf”
Fail utama konfigurasi Nginx adalah seperti berikut.
/etc/nginx/sites-available/blog-hugo.confserver {
listen 80;
server_name blog-hugo.loc;
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
http2 on;
server_name blog-hugo.loc;
# SSL dan Tajuk Keselamatan
include snippets/ssl-common.conf;
include snippets/security-headers.conf;
root /home/<user>/blog/public;
index index.html;
location / {
proxy_pass http://127.0.0.1:1313;
include snippets/proxy-headers.conf;
}
# LiveReload WebSocket
location ~* /livereload {
proxy_pass http://127.0.0.1:1313;
include snippets/livereload.conf;
}
# livereload.js
location /livereload.js {
proxy_pass http://127.0.0.1:1313/livereload.js;
proxy_set_header Host $host;
}
error_log /var/log/nginx/blog-hugo_error.log;
access_log /var/log/nginx/blog-hugo_access.log;
}Ia mengandungi tetapan untuk:
- Redirect
HTTPkeHTTPS, - Sokongan
SSLdan tajuk keselamatan, - Proksi ke pelayan
Hugodi port1313, - Sokongan fail
livereload.jsdan sambunganWebSocket.
Pautan ke snippet lain:
Mengaktifkan Konfigurasi
Aktifkan fail konfigurasi ini melalui pautan simbolik:
bashsudo ln -s /etc/nginx/sites-available/blog-hugo.conf /etc/nginx/sites-enabled/Jangan lupa uji dan muat semula Nginx:
bashsudo nginx -t && sudo systemctl reload nginx
Menjalankan Pelayan Hugo
Jalankan Hugo dengan tetapan berikut agar ia boleh bekerjasama dengan Nginx dan berfungsi di bawah protokol HTTPS:
bashhugo server -D -b "https://blog-hugo.loc" --appendPort=false --forceSyncStatic --gc --liveReloadPort=-1Penjelasan Parameter:
-D: Paparkan kandungan draf.-b "https://blog-hugo.loc": Tetapkan baseURL agar sepadan dengan domain yang digunakan oleh Nginx.--appendPort=false: Elakkan port1313ditambah secara automatik kepada URL.--forceSyncStatic: Salin semula semua fail statik setiap kali ia berubah.--gc: Jalankan pembersihan fail cache yang tidak digunakan.--liveReloadPort=-1: Gunakan port semasa untuk LiveReload. Ini penting untuk sambungan melalui HTTPS.
Carta Aliran Permintaan
Carta berikut menunjukkan aliran permintaan dan bagaimana LiveReload berfungsi di sebalik tabir:
sequenceDiagram participant B as Browser participant N as Nginx participant H as Hugo B->>N: HTTPS request to "blog-hugo.loc" N->>H: proxy to "127.0.0.1:1313" H-->>N: HTML + livereload.js N-->>B: HTML response B->>N: /livereload.js N->>H: proxy to "/livereload.js" H-->>B: livereload.js B->>H: 🔌 Open WebSocket Note left of H: Watches file changes H-->>B: Reload signal Note right of B: 🔁 Auto reloads page
Kali terakhir dikemaskini:
