跳到正文
馬克工具箱

nginx 配置產生器

填寫網域、選擇站點型別,勾選需要的功能,即可得到一份可直接使用的 nginx server 配置。支援反向代理(Node.js、Python、Java 應用)、靜態網站、單頁應用(Vue、React)和 PHP,包括 HTTP 跳轉 HTTPS、www 跳轉、WebSocket、gzip 和靜態資源快取。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

HTTPS
其他

0 表示使用 nginx 預設的 1 MB。

先申請證書,例如:certbot certonly --webroot -w /var/www/letsencrypt -d example.com -d www.example.com。然後執行 nginx -t 檢查並重新載入 nginx。

使用步驟

  1. 填寫網域,選擇站點型別:反向代理填上游地址,其他型別填網站根目錄。
  2. 按需要勾選 HTTPS、HTTP/2、HSTS、www 跳轉、gzip、快取和安全回應標頭。
  3. 複製或下載配置,放到 /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 塊:

  1. 80 埠同時回應兩個網域,保留 /.well-known/acme-challenge/ 可訪問以便證書續期,其餘請求都以 301 跳轉到 https://example.com$request_uri。
  2. www.example.com 的 443 埠使用同一張證書,並 301 跳轉到不帶 www 的網域。
  3. 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 小時。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具