1. 程式人生 > 實用技巧 >一些常用的ngx_http_core_module介紹

一些常用的ngx_http_core_module介紹

alias path

alias path: 路徑別名,,文件對映的另一種機制;僅能用於location上下文

Syntax:    alias path;
Default:    —
Context: location

案例:

http://www.magedu.com/bbs/index.html

location /bbs { 注意: /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 的完整路徑 總結 root 是全路徑。拼接 root 和 location 設定的路徑 alias 相當於重置路徑,重置為 alias 設定的路徑;去掉了location後的路徑,只要alias的路徑

index file...

指定預設網頁檔案;定義錯誤頁,以指定的響應狀態碼進行響應

Syntax:    error_page code ... [=[response]] uri;
Default:    —
Context:    http, server, location, if in location

案例

error_page 404 /404.html;
      location = /40x.html {
 }
 
#error_page 404 =200 /404.html;

error_page 500 502 503 504 /50x.html;
       location = /50x.html {
 }

生產案例:

listen 80;
server_name www.magedu.net;
error_page 500 502 503 504 404 /error.html;
location = /error.html {
root /data/nginx/html;
}

try_files file ... uri;

try_files file ... =code; 按順序檢查檔案是否存在,返回第一個找到的檔案或資料夾(結尾加斜線表示為資料夾),如果所有檔案或資料夾都找不到,會進行一個內部重定向到最後一個引數。只有最後一個引數可以引起一個內部重定向,之前的引數只設置內部URI的指向

Syntax:    try_files file ... uri;
try_files file ... =code;
Default:    —
Context:    server, location

案例

location /images/ {
try_files $uri /images/default.jpg;
} 說明:/images/default.jpg 為 URI

location / {
try_files $uri $uri/index.html $uri.html =404;
}
location / {
            try_files $uri $uri/ /index.php?$query_string;

}

#當用戶請求 http://localhost/example 時,這裡的 $uri 就是 /example。 
#try_files 會到硬盤裡嘗試找這個檔案。如果存在名為 /$root/example(其中 $root 是專案程式碼安裝目錄)的檔案,就直接把這個檔案的內容傳送給使用者。 
#顯然,目錄中沒有叫 example 的檔案。然後就看 $uri/,增加了一個 /,也就是看有沒有名為 /$root/example/ 的目錄。 
#又找不到,就會 fall back 到 try_files 的最後一個選項 /index.php,發起一個內部 “子請求”,也就是相當於 nginx 發起一個 HTTP 請求到 http://localhost/index.php。 
loaction / {

try_files $uri @apache

}

loaction @apache{

proxy_pass http://127.0.0.1:88

include aproxy.conf

}

#try_files方法讓Ngxin嘗試訪問後面得$uri連結,並進根據@apache配置進行內部重定向。

#當然try_files也可以以錯誤程式碼賦值,如try_files /index.php = 404 @apache,則表示當嘗試訪問得檔案返回404時,根據@apache配置項進行重定向。

定義客戶端請求的相關配置

keepalive_timeout timeout [header_timeout];

設定保持連線超時時長,0表示禁止長連線,預設為75

Syntax:    keepalive_timeout timeout [header_timeout];
Default:    
keepalive_timeout 75s;
Context:    http, server, location
設定保持連線超時時長,0表示禁止長連線,預設為75s
示例:在響應頭顯示此首部欄位
keepalive_timeout 60 60;

keepalive_requests number;

在一次長連線上所允許請求的資源的最大數量,預設為100

Syntax:    keepalive_requests number;
Default:    
keepalive_requests 100;
Context:    http, server, location
在一次長連線上所允許請求的資源的最大數量,預設為100
keepalive_requests number 1000

keepalive_disable none | browser ...;

對哪種瀏覽器禁用長連線

Syntax:    keepalive_disable none | browser ...;
Default:   keepalive_disable msie6;
Context:    http, server, location
對哪種瀏覽器禁用長連線
keepalive_disable google; #禁止google瀏覽器長連線

send_timeout time;

向客戶端傳送響應報文的超時時長,此處是指兩次寫操作之間的間隔時長,而非整個響應過程的傳輸時長

Syntax:    send_timeout time;
Default:    send_timeout 60s;
Context:    http, server, location

client_max_body_size size;

求報文中實體的最大值,設為0,則不限制,預設1m,超過報413錯誤

Syntax:    client_max_body_size size;
Default:    client_max_body_size 1m;
Context:    http, server, location

client_body_buffer_size size;

用於接收每個客戶端請求報文的body部分的緩衝區大小;預設為16k;超出此大小時,其將被暫存到磁碟上的由下面client_body_temp_path指令所定義的位置

Syntax:    client_body_buffer_size size;
Default:    client_body_buffer_size 8k|16k;
Context:    http, server, location

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

設定儲存客戶端請求報文的body部分的臨時儲存路徑及子目錄結構和數量 目錄名為16進位制的數字;用hash之後的值從後往前擷取第1、2、3級作為檔名

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

Syntax:    client_body_temp_path path [level1 [level2 [level3]]];
Default:    client_body_temp_path client_body_temp;
Context:    http, server, location

案例

上傳伺服器配置生產案例:
location /upload {
  keepalive_timeout 60 60;
  keepalive_requests number 1000;
  keepalive_disable google;
  send_timeout 120s;
  client_max_body_size 100m;
  client_body_buffer_size 2048k;
  client_body_temp_path /apps/nginx/temp 1 2 2;
}

對客戶端的相關設定

limit_rate rate;

限制響應給客戶端的傳輸速率,單位是bytes/second

預設值0表示無限制

限制向客戶端傳輸響應的速率。在rate被以每秒位元組數指定。零值禁用速率限制。該限制是根據請求設定的,因此,如果客戶端同時開啟兩個連線,則總速率將是指定限制的兩倍。

Syntax:    limit_rate rate;
Default:    limit_rate 0;
Context:    http, server, location, if in location

limit_except method;

限制客戶端使用除了指定的請求方法之外的其它方法,僅在location下使用

method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, PATCH

句法:    limit_except method ... { ... }
預設:    -
內容:    location

案例

limit_except GET {
    allow 192.168.1.0/24;
    deny any;
}
#除了GET和HEAD 之外其它方法僅允許192.168.1.0/24網段主機使用
#method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, PATCH

檔案操作優化的配置

aio

aio on | off | threads[=pool]; 是否啟用aio功能,預設off

在FreeBSD和Linux上啟用或禁用非同步檔案I/O (AIO):

Syntax:    aio on | off | threads[=pool];
Default:    aio off;
Context:    http, server, location
This directive appeared in version 0.8.11.

directio

當檔案大於等於給定大小時,同步(直接)寫磁碟,而非寫快取,預設off

Syntax:    directio size | off;
Default:    directio off;
Context:    http, server, location
This directive appeared in version 0.7.7.

sendfile

#sendfile 指令指定 nginx 是否呼叫 sendfile 函式(zero copy 方式)來輸出檔案,對於普通應用必須設為 on
#如果用來進行下載等應用磁碟IO重負載應用,可設定為 off,以平衡磁碟與網路I/O處理速度,降低系統的uptime。
#是否啟用sendfile功能,在核心中封裝報文直接傳送,預設Off

Syntax:    sendfile on | off;
Default:    sendfile off;
Context:    http, server, location, if in location

案例

location /video/ {
  sendfile on;
  aio on;
  directio 8m;
}

open_file_cache

句法:    open_file_cache off;
         open_file_cache max=N [inactive=time];
預設:    open_file_cache關閉;
內容:    http,server,location

nginx可以快取以下三種資訊: (1) 檔案元資料:檔案的描述符、檔案大小和最近一次的修改時間 (2) 開啟的目錄結構 (3) 沒有找到的或者沒有許可權訪問的檔案的相關資訊

max=N:可快取的快取項上限;達到上限後會使用LRU演算法實現管理 inactive=time:快取項的非活動時長,在此處指定的時長內未被命中的或命中的次數少於open_file_cache_min_uses指令所指定的次數的快取項即為非活動項,將被刪除

open_file_cache_errors

是否快取查詢時發生錯誤的檔案一類的資訊,預設值為off

句法:    open_file_cache_errors on | off;
預設:    open_file_cache_errors關閉;
內容:    http,server,location

open_file_cache_min_uses number;

句法:    open_file_cache_min_uses number;
預設:    open_file_cache_min_uses 1;
內容:    http,server,location

open_file_cache指令的inactive引數指定的時長內,至少被命中此處指定的次數方可被歸類為活動項,預設值為1

設定*number*open_file_cache偽指令的inactive引數配置的時間段內檔案訪問的最少時間,這是檔案描述符在快取記憶體中保持開啟狀態所必需的。

open_file_cache_valid time;

句法:    open_file_cache_valid time;
預設:    open_file_cache_valid 60s;
內容:    http,server,location

快取項有效性的檢查頻率,預設值為60s