nginx(二):基本應用

配置文件詳解

event段配置

  1. worker_connections #;

    每一個worker進程所可以響應的最大併發請求數量;html

    nginx最大併發響應數=worker_proceses * worker_connectionsnode

注意,nginx的worker_connections也受到worker_rlimit_nofile number的影響;linux

  1. use method

    method: [epoll|rgsig|select|poll];nginx

    定義使用的事件模型;linux只能使用epoll;web

  1. accept_mutex [on|off];

    默認on,各worker接收用戶的請求的負載均衡鎖;啓用時,表示用於讓多個worker輪流地、序列化地響應新請求;正則表達式

http配置段

套接字相關配置

  1. server{.....}指令

         用來定義和配置一個虛擬主機算法

eg:server {瀏覽器

         listen PORT緩存

         server_name HOSTNAME1 HOSTNAME2 ...;服務器

         root /PATH/;    

         }

  1. listen

         該指令用來指定在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:發送緩衝區大小

 

  1. server_name NAME1 NAME2 ....;

a)         指明當前server的主機名。主機名支持通配符*,以及正則表達式~。

b)         主機名匹配策略

                   首先作精確匹配;例如:www.magedu.com

                   左側通配符;例如:*.magedu.com

                   右側通配符,例如:www.magedu.*

                   正則表達式,例如:~^.*\.magedu\.com$

                   default_server

  1. tcp_nodelay on|off;

         默認值:on

         對keepalived模式下的鏈接是否啓用TCP_NODELAY選項。基於TCP的鏈接每次都須要三次握手四次斷開的過程,在通訊時發送很小的數據包也須要這個過程,這樣開銷很大,浪費帶寬。因此TCP有針對於此的優化,在客戶端請求很小的資源時,會有必定延遲,多積累幾個請求,一併處理。這會致使在客戶端只訪問一個小的資源時,會遲遲得不到響應。對於WEB服務器這種影響很致命,因此應該啓用tcp_nodelay。

  1. sendfile  on|off;

         默認爲 off,一般須要啓動起來。

         在內核中直接封裝響應報文,發送給資源請求客戶端。

 

        

路徑相關配置

  1. root  PATH;

         設置WEB資源路徑映射;用於指名用戶請求的uri對應本地文件系統上的文檔所在的目錄路徑。

  1. location [ = | ~ | ~* | ^~ ] uri { ... }

         location @name { ... }

        

a)         功能:容許根據用戶請求的URI來匹配定義的各location,匹配到時,此請求將被相應的location塊中的配置所處理;簡言之,即用於爲須要用到專用配置的uri提供特定配置;

b)         匹配規則

                  =:URI的精確匹配;一字不差。

                  ^~:URI的左半部分匹配,不區分字符大小寫;

                  ~:作正則表達式匹配,區分字符大小寫;

                  ~*:作正則表達式匹配,不區分字符大小寫;

        

c)         匹配優先級:精確匹配=、^~、~或~*、不帶符號的URL;

d)         使用場景eg:對於用戶請求的某一 特定類型的資源,如.txt作壓縮處理。

                   location  ~*\.txt${

                            gzip on;

                            }

  1. alias path;

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指令指定的是根。

  1. index file;

定義默認站點主頁面。

  1. error_page code ... [=[response]] uri;

         根據http的狀態碼重定向錯誤頁面;

         error_page  404  /404.html

         error_page  404  =200  /404.html  (以指定的響應狀態碼進行響應)

                                                       

  1. try_files file ... uri;        

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,不然會致使死循環);

客戶端請求相關配置

  1. keepalive_timeout timeout [header_timeout];

         設定keepalive鏈接的超時時長;0表示禁止長鏈接;默認爲75s;

        

  1. keepalive_requests number;

         在keepalived鏈接上所容許請求的最大資源數量;默認爲100;

 

  1. keepalive_disable none | browser ...;

         指明禁止爲什麼種瀏覽器使用keepalive功能;

         注意這個指令並非進制keepalived功能,而是有些瀏覽器對此功能支持很差,此指令是爲了指名對何種瀏覽器禁用keepalived功能。

  1. send_timeout time;

         發送響應報文的超時時長,默認爲60s; 兩次寫操做的間隔時長

        

  1. client_body_buffer_size size;

         接收客戶請求報文body的緩衝區大小;默認爲16k;超出此指定大小時,其將被移存於client_body_temp_path指令指定的磁盤上;

 

  1. client_body_temp_path path [level1 [level2 [level3]]];

         設定用於存儲客戶端請求body的臨時存儲路徑及子目錄結構和數量;

          

         client_body_temp_path  /var/tmp/client_body  2 1;

                   2表明使用2個16進制字符來建立一級子目錄,共有2^8(256)個。

                   1表明使用1個16進制字符來在每個一級子目錄下建立2^4(16)個二級級子目錄,最多有三級.

對客戶端請求的進行限制

  1. limit_excpet  METHOD {...}

         限制客戶端的請求方法,對指定範圍以外的其它的方法進行訪問控制;

        

         limit_except  GET {

                   allow  172.16.0.0/16;

                   deny all;

         }

         示例:curl -X PUT  http://1.1.1.1/download/index.html  ,put爲GET以外的方法,因此會拒絕訪問

  1. limit_rate  speed;

a)         限制客戶端每秒鐘所可以傳輸的字節數,默認speed爲0表示無限制;

b)         eg:

         location /download/{

                   limit_rate 20;

                   root /web/;

         }

c)         驗證:weget http://ip:piort/download/1.txt。

文件操做優化相關的配置       

  1. aio  on|off|threads[=pool];瞭解

         是否啓用異步IO功能,默認關閉。

  1. directio  size|off; 指定直接IO大小,或者關閉直接IO功能。

         直接IO是指,直接將數據寫入磁盤,而不是先緩存到內存中

  1. open_file_cache off;

         open_file_cache max=N [inactive=time];

         打開文件相關信息的緩存

                   nginx能夠緩存如下三種信息:

                            (1) 文件描述符、文件大小和最近一次的修改時間;

                            (2) 打開的目錄的結構;

                            (3) 沒有找到的或者沒有權限操做的文件的相關信息;

                   max=N表示可緩存的最大條目上限;一旦達到上限,則會使用LRU算法從緩

                            存中刪除最近最少使用的緩存項;

                   inactive=time:在此處指定的時長內沒有被訪問過的緩存項是爲非活動緩存項,非活動緩存是無效的,所以直接刪除;

  1. open_file_cache_errors on | off;

         該配置項決定open_file_cache  是否緩存找不到其路徑的文件,或沒有權限沒有權限訪問的文件相關信息;

        

  1. open_file_cache_valid time;

         每隔多久檢查一次緩存中緩存項的有效性;默認爲60s;

        

  1. open_file_cache_min_uses number;

                   定義在     open_file_cache max=N [inactive=time]; 中inactive定義的時間內,最少被訪問次數,若是訪問次數少於number,則被視爲非活動項,其不會被緩存

相關文章
相關標籤/搜索