Skip to content

建立 2026-09-15 更新 2026-09-15

設定檔結構與核心指令

Nginx 的所有功能,最終都會落在同一份 nginx.conf 裡。它是一個巢狀的區塊(context)結構,越外層的設定範圍越廣,內層可以覆寫外層的值。理解這個結構,看到任何 Nginx 設定檔都不會再感到陌生。

設定檔的巢狀結構

一份完整設定檔的骨架大致如下:

# main context:全域設定
worker_processes auto;

events {
    # 連線處理相關設定
    worker_connections 1024;
}

http {
    # 所有網站共用的 HTTP 設定
    include mime.types;

    server {
        # 一個網站(虛擬主機)
        listen 80;
        server_name example.com;

        location / {
            # 特定網址路徑的處理規則
            root /var/www/html;
            index index.html;
        }
    }
}

實務上很少把所有設定寫在同一個檔案裡,而是在 http 區塊用 include 載入其他檔案(例如每個網站一個檔案),方便管理:

http {
    include /etc/nginx/conf.d/*.conf;
}

常用核心指令

指令 所在 context 說明
worker_processes main worker process 數量,設為 auto 會依 CPU 核心數自動決定
worker_connections events 每個 worker 可同時處理的連線數上限
include 各處皆可 載入其他設定檔,用來拆分與重用設定
listen server 監聽的連接埠與位址,例如 80443 ssl
server_name server 這個 server block 要回應的網域名稱
root http / server / location 指定對應的檔案系統根目錄
index http / server / location 找不到明確檔名時預設要回傳的檔案
access_log / error_log 各處皆可 紀錄檔路徑,排查問題的第一手資料

修改設定後如何安全套用

Nginx 的設定檔對縮排跟空白不敏感,但少一個分號 ; 或大括號沒對齊就會整份設定失效。因此每次修改後都應該遵守同一個流程:

sudo nginx -t            # 1. 先檢查語法
sudo systemctl reload nginx   # 2. 語法正確才重新載入

reload 只會讓 master process 重新讀取設定並啟動新的 worker,既有連線會處理完才結束,因此不會像 restart 一樣造成短暫斷線。

最小可用設定範例

下面是一份可以直接運作、提供單一靜態網站的最小設定,後續章節會在此基礎上加入反向代理、負載平衡與 HTTPS:

events {}

http {
    server {
        listen 80;
        server_name localhost;

        location / {
            root /var/www/html;
            index index.html;
        }
    }
}