一些常用的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];
Syntax: keepalive_timeout timeout [header_timeout];
Default:
keepalive_timeout 75s;
Context: http, server, location
設定保持連線超時時長,0表示禁止長連線,預設為75s 示例:在響應頭顯示此首部欄位 keepalive_timeout 60 60;
Syntax: keepalive_requests number; Default: keepalive_requests 100; Context: http, server, location
在一次長連線上所允許請求的資源的最大數量,預設為100 keepalive_requests number 1000
Syntax: keepalive_disable none | browser ...;
Default: keepalive_disable msie6;
Context: http, server, location
對哪種瀏覽器禁用長連線
keepalive_disable google; #禁止google瀏覽器長連線
Syntax: send_timeout time; Default: send_timeout 60s; Context: http, server, location
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; }
限制響應給客戶端的傳輸速率,單位是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.
Syntax: directio size | off; Default: directio off; Context: http, server, location This directive appeared in version 0.7.7.
#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 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 1; 內容: http,server,location
open_file_cache指令的inactive引數指定的時長內,至少被命中此處指定的次數方可被歸類為活動項,預設值為1
設定*number*
由
句法: open_file_cache_valid time; 預設: open_file_cache_valid 60s; 內容: http,server,location
快取項有效性的檢查頻率,預設值為60s