Nginx.conf 的結構
使用的環境
系統與使用工具 |
---|
Centos 7.6 |
nginx/1.16.1 |
一、nginx.conf 設定檔內容
Nginx 的設定檔是 nginx.conf,檔案位置通常是在 /etc/nginx/nginx.conf
或 /usr/local/nginx/conf/nginx.conf
。
... #全區塊
event #events區塊
{
...
}
http #http區塊
{
... #http全區塊
server #server區塊
{
... #server全區塊
loaction [PATTERN] #location區塊
{
...
}
loaction [PATTERN] #location區塊
{
...
}
}
server #server區塊
{
...
}
... #http全區塊
}
二、nginx.conf 檔案結構
nginx.conf
一共由三部分組成:
- 全區塊
- events 區塊
- http 區塊
- http 全區塊
- 多個 server 區塊(包含 server 全區塊、多個location 區塊)
三、nginx.conf 檔案結構注意事項
- 同一個設定區塊中巢狀結構的設定區塊,各個之間不存在次序關係
- 高一級區塊中的指令,可以作用於本身所在的區塊和此區塊包含的所有低階級區塊。
- 如果某個指令在兩個不同層級的區塊中同時出現,則採用「就近原則」,即以較低層級區塊中的設定為準。
四、各區塊解釋
1. 全區塊
(1) 作用域是 Nginx 全域。
(2) 設定影響 Nginx 伺服器整體執行的設定指令。
(3) 通常設定包含:
- Nginx 伺服器的使用者(群組)
- 允許產生的 worker process 數
- Nginx 處理行程 PID 儲存路徑
- 紀錄檔的儲存路徑
- 設定檔的引用
2. events 區塊
(1) 設定影響 Nginx 伺服器與使用者的網路連接。
(2) 通常設定包含:
- 是否開啟對多 worker process 下的網路連接進行序列化
- 是否允許同時接收多個網路連接
- 選取哪種事件驅動模型處理連接請求
- 每個 worker process 可以同時支援的最大連接數
3. http 區塊
這裡講的 「http 全區塊」 表示 http 自己的全區塊,意思是 http 區塊中不包含在 server 區塊的部分。
(1) 最重要的一部分,包含代理、快取、協力廠商模組設定、紀錄檔定義等絕大多數的功能。
(2) http 全區塊通常設定包含:
- 檔案引用
- MIME-Type 定義
- 紀錄檔自訂
- 是否使用 sendfile 傳輸檔案
- 連接逾時間
- 單連接請求數上限
4. server 區塊
(1) 此區塊和 「虛擬機器」的概念有密切聯繫,虛擬機器的技術使得 Nginx 伺服器可以在同一台伺服器上只執行一組 Nginx 處理行程,就可以執行多個網站。
(2) 每個 http 區塊包含多個 server 區塊,而每個 server 區塊就相當於一台虛擬主機,它內部可有台主機聯合提供服務,一起對外提供一組服務或網站。
(3) 通常設定包含:
- 本虛擬主機的監聽設定
- 本虛擬主機的名稱或 IP 設定
5. location 區塊
(1) 每個 server 區塊包含多個 location 區塊,嚴格來說,location 其實是 server 區塊的指令 (2) location 區塊的主要作用:
- 對特定請求進行處理
ex. Nginx 伺服器接收到的請求字串(server_name/uri-string),除去虛擬主機名稱或 IP 之外的字串(/uri-string)進行比對 - 位置定向
- 資料快取
- 回應控制
- 協力廠商模組設定
參考資料
- Nginx技術手札:網頁伺服器應用全攻略