天天看點

ngx_http_core_module子產品

一、與套接字相關的配置:

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

繼續閱讀