一、與套接字相關的配置:
1、server {...} 配置一個虛拟主機
server {
listen address[:PORT]|PORT;
server_name SERVER_NAME;
root /PATH/TO/DOCUMENT_ROOT
}
2、listen PORT|address[:PORT]|unix:/PATH/TO/SOCKET_FILE
listen address[:PORT] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]
- default_server 設定為預設虛拟主機
- ssl 限制能夠通過ssl連接配接提供服務
- backlog=number 超過并發連接配接數後,新請求進入後援隊列的長度
- rcbuf=size 接收緩沖區大小
- sndbuf=size 發送緩沖區大小
注意:
1)基于port;
listen PORT;指令監聽在不同的端口(即:包括80端口在内的端口都是監聽的)
2)基于ip的虛拟主機
listen IP:PORT IP位址不同
3)基于hostname
server_name FQDN;指令指向不同的主機名
注意:有子配置檔案的時候,通路預設站點時,生效的配置檔案為按子檔案名字母排序的順序,但是如果指定了default_server時,則是指定的站點為預設站點
3、server_name name ...;
- 虛拟主機的主機名後可跟由多個空白字元分割的字元串
-
支援*通配任意長度的任意字元
server_name *.yuanjianchao.tech www.yuanjianchao.*
-
支援~起始的字元做正規表達式模式比對,性能原因慎用
server_name ~^www\d+\.magedu\.com$ ('\d 表示 [0-9]')
比對優先級機制從高到低
1)首先是字元串精确比對 如:www.jianchao.tech
2)左側*通配符 如:*.jianchao.tech
3)右側*通配符 如:www.jianchao.*
4)正規表達式 如:~^.*\.jianchao\.tech$
5)default_server
4、tcp_nodelay on | off(Context:http,server,location)
在keepalived模式下的連接配接是否啟用TCP_NODELAY選項,當為off時,延遲發送,合并多個請求後再發送,預設為on,不延遲發送
5、sendfile on | off
是否啟用sendfile功能,在核心心中封裝封包直接發送預設為off
6、server_tokens on | off | build | string
是否在相應封包而非server首部顯示nginx版本(建議在主配置檔案中改為off)
7、root
設定web資源的路徑映射;用于指明請求的URL所對應的文檔的目錄路徑,可用于http, server, location, if in location
server {
...
root /data/www/vhost1;
}
8、location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
在一個server中location配置段可存在多個,用于實作從uri到檔案系統的路徑映射;ngnix會根據使用者請求的URI來檢查定義的所有location,并找出一個最佳比對,而後應用其配置
示例:
server {
...
server_name www.yuanjianchao.tech;
location /images/ {
root /data/imgs/;
}
}
實驗結果:http://www.yuanjianchao.tech/images/logo.jpg--> /data/imgs/images/logo.jpg
=:對URI做精确比對;
location = / {
...
}
比對結果:http://www.magedu.com/ 比對 http://www.magedu.com/index.html 不比對
- ^~:對URI的最左邊部分做比對檢查,不區分字元大小寫
- ~:對URI做正規表達式模式比對,區分字元大小寫
- ~*:對URI做正規表達式模式比對,不區分字元大小寫
- 不帶符号:比對起始于此uri的所有的uri
比對優先級從高到低:
=, ^~, ~/~*, 不帶符号
9、alias path(适用範圍location)
路徑别名,文檔映射的另一個機制;僅能用于location上下文
示例:
http://www.magedu.com/bbs/index.php
location /bbs/ {
alias /web/forum/;
} --> /web/forum/index.html(實際通路檔案)
location /bbs/ {
root /web/forum/;
} --> /web/forum/bbs/index.html(實際通路檔案)
注意:
location中使用root指令和alias指令的意義不同
(a) root,給定的路徑對應于location中的/uri/左側的/
(b) alias,給定的路徑對應于location中的/uri/右側的/
10、index file ...;(Context:http,server,location)
指定預設網頁資源,注意:所屬子產品ngx_http_index_module
11、error_page code ... [=[response]] uri;(Context:http, server, location, if in location) 所屬子產品:ngx_http_core_module
定義錯誤頁,以指定的響應狀态碼進行響應
error_page 404 /404.html
error_page 404 =200 /404.html
12、try_files file ... uri;
try_files file ... =code;
按順序檢查檔案是否存在,傳回第一個找到的檔案或檔案夾(結尾加斜線表示為檔案夾),如果所有的檔案或檔案夾都找不到,會進行一個内部重定向到最後一個參數。隻有最後一個參數可以引起一個内部重定向,之前的參數隻設定内部URI的指向。最後一個參數是回退URI且必須存在,否則會出現内部500錯誤
location /images/ {
try_files $uri /images/default.gif;(路徑是相對于網站root目錄的路徑,即是url路徑)
}
location / {
try_files $uri $uri/index.html $uri.html =404;
}
二、定義用戶端請求的相關配置
13、keepalive_timeout timeout [header_timeout];(Context:http,server,location)
設定保持連接配接逾時時長,0表示禁止長連接配接,預設為75s
14、keepalive_requests number;(Context:http,server,location)
在一次長連接配接上所允許請求的資源的最大數量預設為100
15、keepalive_disable none | browser ...(Context:http,server,location)
對哪種浏覽器禁用長連接配接
16、send_timeout time;(Context:http,server,location)
向用戶端發送響應封包的逾時時長,此處是指兩次寫操作之間的間隔時長,而非整個響應過程的傳輸時長
17、client_body_buffer_size size;
用于接收每個用戶端請求封包的body部分的緩沖區大小;預設為16k;超出此大小時,其将被暫存到磁盤上的由client_body_temp_path指令所定義的位置
18、client_body_temp_path path [level1 [level2 [level3]]];
設定用于存儲用戶端請求封包的body部分的臨時存儲路徑及子目錄結構和數量目錄名為16進制的數字;client_body_temp_path /var/tmp/client_body 1 2 2
1 1級目錄占1位16進制,即2^4=16個目錄 0-f
2 2級目錄占2位16進制,即2^8=256個目錄 00-ff
2 3級目錄占2位16進制,即2^8=256個目錄 00-ff
三、對用戶端進行限制的相關配置
19、limit_rate rate;
限制響應給用戶端的傳輸速率,機關是bytes/second預設值0表示無限制
20、limit_except method ... { ... },
僅用于location限制用戶端使用除了指定的請求方法之外的其它方法method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,PROPPATCH, LOCK, UNLOCK, PATCH
limit_except GET {
allow 192.168.1.0/24;(可以是特定IP)
deny all;
} 除了GET和HEAD 之外其它方法僅允許192.168.1.0/24網段主機使用
四、檔案操作優化的配置
21、aio on | off | threads[=pool];(異步)
是否啟用aio功能
22、directio size | off;
是否同步(直接)寫磁盤,而非寫緩存,在Linux主機啟用O_DIRECT标記,則檔案大于等于給定大小時使用,例如directio 4m
23、open_file_cache off;
open_file_cache max=N [inactive=time];
nginx可以緩存以下三種資訊:(中繼資料)
(1) 檔案中繼資料:檔案的描述符、檔案大小和最近一次的修改時間
(2) 打開的目錄結構
(3) 沒有找到的或者沒有權限通路的檔案的相關資訊
- max=N:可緩存的緩存項上限;達到上限後會使用LRU算法實作管理
- inactive=time:緩存項的非活動時長,在此處指定的時長内未被命中的或命中的次數少于open_file_cache_min_uses指令所指定的次數的緩存項即為非活動項 , 将被删除
24、open_file_cache_errors on | off;
是否緩存查找時發生錯誤的檔案一類的資訊 預設值為off
25、open_file_cache_min_uses number;
open_file_cache指令的inactive參數指定的時長内,至少被命中此處指定的次數方可被歸類為活動項預設值為1