使用步驟
- 填寫網域,選擇站點型別:反向代理填上游地址,其他型別填網站根目錄。
- 按需要勾選 HTTPS、HTTP/2、HSTS、www 跳轉、gzip、快取和安全回應標頭。
- 複製或下載配置,放到 /etc/nginx/conf.d/,執行 nginx -t 檢查後重新載入 nginx。
引數說明
- 反向代理
- 轉發到上游地址,並傳遞 Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto 請求標頭,後端可以拿到真實訪客 IP 和協議。
- 單頁應用
- 找不到的路徑回退到 index.html,適合 Vue Router、React Router 的 history 模式,重新整理頁面不會 404。
- HTTPS
- 證書路徑按 certbot(Let's Encrypt)預設位置生成,HTTP 請求 301 跳轉到 HTTPS。HTTP/2 用 listen 443 ssl http2 寫法,相容各版本 nginx。
- HSTS
- 讓瀏覽器在一年內只用 HTTPS 訪問該網域和所有子域。開啟前請確認所有子域都已配置 HTTPS,否則會無法訪問。
示例:帶 HTTPS 和 www 的單頁應用
網域填 example.com,站點型別選「單頁應用」,勾選「HTTPS(Let’s Encrypt 證書路徑)」、HTTP/2 和「同時回應 www. 並跳轉到主網域」(為了簡短,關閉「Gzip 壓縮」「安全回應標頭」和「靜態資源長快取」),產生器會寫出三個 server 塊:
- 80 埠同時回應兩個網域,保留
/.well-known/acme-challenge/可訪問以便證書續期,其餘請求都以 301 跳轉到https://example.com$request_uri。 www.example.com的 443 埠使用同一張證書,並 301 跳轉到不帶 www 的網域。example.com的 443 埠提供網站內容:
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
兩個 HTTPS 塊都指向 /etc/letsencrypt/live/example.com/fullchain.pem 和 privkey.pem,允許 TLS 1.2 和 1.3,使用 10 MB 的共享會話快取,會話超時為一天。try_files 這一行的作用是:在 /settings 這樣的前端路由上重新整理頁面時,返回的是應用本身,而不是 404。
常見問題
為什麼 nginx -t 提示 http2 指令已棄用?
nginx 1.25.1 起推薦單獨寫 http2 on;,但 Ubuntu 24.04 等系統自帶的 1.24 還不支援這個寫法,所以這裡用相容所有版本的 listen 443 ssl http2。新版本只會給出警告,不影響使用。
開啟 www 跳轉後證書要包含 www 嗎?
要。申請證書時同時加上兩個網域,例如 certbot -d example.com -d www.example.com。
上傳檔案報 413 Request Entity Too Large 怎麼辦?
nginx 預設只允許 1 MB 的請求體,把「上傳大小上限」改成需要的值(例如 100)即可。
WebSocket 連線失敗怎麼辦?
反向代理需要轉發 Upgrade 和 Connection 請求標頭,勾選「支援 WebSocket」會自動加上,並把讀取超時延長到 1 小時。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。