每一個worker進程所可以響應的最大併發請求數量;html
nginx最大併發響應數=worker_proceses * worker_connectionsnode
注意,nginx的worker_connections也受到worker_rlimit_nofile number的影響;linux
method: [epoll|rgsig|select|poll];nginx
定義使用的事件模型;linux只能使用epoll;web
默認on,各worker接收用戶的請求的負載均衡鎖;啓用時,表示用於讓多個worker輪流地、序列化地響應新請求;正則表達式
用來定義和配置一個虛擬主機算法
eg:server {瀏覽器
listen PORT緩存
server_name HOSTNAME1 HOSTNAME2 ...;服務器
root /PATH/;
}
該指令用來指定在server{...}中接收請求的IP和port。
a) 三種格式:
listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
b) 參數介紹
default_server:默認虛擬主機。使用場景,在用戶請求的主機不能匹配服務器上的全部虛擬主機時,使用default_server提供服務。
ssl:設置使用ssl鏈接提供服務
backlog:後援隊列的長度,通常來講每個應用程序,在此應用對應的內核緩衝中都有對應的緩衝接收,列入一個服務最大併發響應爲100,單同時有200個併發此時使用到後援隊列。
unix:path:使用unix套接字文件通訊。使用場景本機應用訪問本地的nginx服務時。
rcvbuf:接受緩衝區大小
sndbuf:發送緩衝區大小
a) 指明當前server的主機名。主機名支持通配符*,以及正則表達式~。
b) 主機名匹配策略
首先作精確匹配;例如:www.magedu.com
左側通配符;例如:*.magedu.com
右側通配符,例如:www.magedu.*
正則表達式,例如:~^.*\.magedu\.com$
default_server
默認值:on
對keepalived模式下的鏈接是否啓用TCP_NODELAY選項。基於TCP的鏈接每次都須要三次握手四次斷開的過程,在通訊時發送很小的數據包也須要這個過程,這樣開銷很大,浪費帶寬。因此TCP有針對於此的優化,在客戶端請求很小的資源時,會有必定延遲,多積累幾個請求,一併處理。這會致使在客戶端只訪問一個小的資源時,會遲遲得不到響應。對於WEB服務器這種影響很致命,因此應該啓用tcp_nodelay。
默認爲 off,一般須要啓動起來。
在內核中直接封裝響應報文,發送給資源請求客戶端。
設置WEB資源路徑映射;用於指名用戶請求的uri對應本地文件系統上的文檔所在的目錄路徑。
location @name { ... }
a) 功能:容許根據用戶請求的URI來匹配定義的各location,匹配到時,此請求將被相應的location塊中的配置所處理;簡言之,即用於爲須要用到專用配置的uri提供特定配置;
b) 匹配規則
=:URI的精確匹配;一字不差。
^~:URI的左半部分匹配,不區分字符大小寫;
~:作正則表達式匹配,區分字符大小寫;
~*:作正則表達式匹配,不區分字符大小寫;
c) 匹配優先級:精確匹配=、^~、~或~*、不帶符號的URL;
d) 使用場景eg:對於用戶請求的某一 特定類型的資源,如.txt作壓縮處理。
location ~*\.txt${
gzip on;
}
a) 定義路徑別名,文檔映射的一種機制;只適用於location上下文
b) 辨析root和alias的不一樣,咱們來舉例說明。
a.1 訪問http://www.A.com/sa/1.jpg
location /sa/ {
alias /web/user/sa/;
}
對應的是/web/user/sa/1.jps。alias其實就是把咱們訪問的uri,替換爲alias指定的uri
a.2 location /sa/ {
root /web/user/sa/;
}
對應的是/web/user/sa/sa/1.jps。root指令指定的是根。
定義默認站點主頁面。
根據http的狀態碼重定向錯誤頁面;
error_page 404 /404.html
error_page 404 =200 /404.html (以指定的響應狀態碼進行響應)
eg:
location /test {
try_files test1.html test2.html test3.html http://156.0.235.24/index.html
}
嘗試查找第1至第N-1個文件,第一個即爲返回給請求者的資源;若1至N-1文件都不存在,則跳轉至最一個uri(必須不能匹配至當前location,而應該匹配至其它location,不然會致使死循環);
設定keepalive鏈接的超時時長;0表示禁止長鏈接;默認爲75s;
在keepalived鏈接上所容許請求的最大資源數量;默認爲100;
指明禁止爲什麼種瀏覽器使用keepalive功能;
注意這個指令並非進制keepalived功能,而是有些瀏覽器對此功能支持很差,此指令是爲了指名對何種瀏覽器禁用keepalived功能。
發送響應報文的超時時長,默認爲60s; 兩次寫操做的間隔時長
接收客戶請求報文body的緩衝區大小;默認爲16k;超出此指定大小時,其將被移存於client_body_temp_path指令指定的磁盤上;
設定用於存儲客戶端請求body的臨時存儲路徑及子目錄結構和數量;
client_body_temp_path /var/tmp/client_body 2 1;
2表明使用2個16進制字符來建立一級子目錄,共有2^8(256)個。
1表明使用1個16進制字符來在每個一級子目錄下建立2^4(16)個二級級子目錄,最多有三級.
限制客戶端的請求方法,對指定範圍以外的其它的方法進行訪問控制;
limit_except GET {
allow 172.16.0.0/16;
deny all;
}
示例:curl -X PUT http://1.1.1.1/download/index.html ,put爲GET以外的方法,因此會拒絕訪問
a) 限制客戶端每秒鐘所可以傳輸的字節數,默認speed爲0表示無限制;
b) eg:
location /download/{
limit_rate 20;
root /web/;
}
c) 驗證:weget http://ip:piort/download/1.txt。
是否啓用異步IO功能,默認關閉。
直接IO是指,直接將數據寫入磁盤,而不是先緩存到內存中
open_file_cache max=N [inactive=time];
打開文件相關信息的緩存
nginx能夠緩存如下三種信息:
(1) 文件描述符、文件大小和最近一次的修改時間;
(2) 打開的目錄的結構;
(3) 沒有找到的或者沒有權限操做的文件的相關信息;
max=N表示可緩存的最大條目上限;一旦達到上限,則會使用LRU算法從緩
存中刪除最近最少使用的緩存項;
inactive=time:在此處指定的時長內沒有被訪問過的緩存項是爲非活動緩存項,非活動緩存是無效的,所以直接刪除;
該配置項決定open_file_cache 是否緩存找不到其路徑的文件,或沒有權限沒有權限訪問的文件相關信息;
每隔多久檢查一次緩存中緩存項的有效性;默認爲60s;
定義在 open_file_cache max=N [inactive=time]; 中inactive定義的時間內,最少被訪問次數,若是訪問次數少於number,則被視爲非活動項,其不會被緩存