[ngx_http_core_module][1]
[variables][2]
## 配置框架
~~~
http {
upstream {
.,..
}
server {
listen IP:PORT;
# 虛擬主機
location /URL {
if ...{
...
}
root "/path/to/somewhere";
...
}
}
server {
,,.
}
}
~~~
## 虛擬主機相關的配置
>[success]server {}
定義一個虛擬主機;
>[success]server_tokens
默認值:on
在錯誤頁面或是響應報文頭中是否顯示Nginx**版本號**
>[success]listen address[:port] [default_server] [ssl] [backlog=number] [rcvbuf=size] [sndbuf=size];
監聽的端口
backlog=number: 指明TCP協議backlog隊列的大小。默認為-1,表示不設置;
rcvbuf=size:設定監聽句柄的SO_RCVBUF參數;
>[success]server_name name [...];
后可跟多個主機名;名稱還可以使用通配符和正則表達式(~);
(1) 先做精確匹配;www.magedu.com:
(2) 左側通配符匹配,例如:*.magedu.com;
(3) 右側通配符匹配,例如:www.*;
(4) 正則表達式匹配,例如: ~ ^.*\.magedu\.com$
(5) default_server
>[success]location [=|~|~*|^~] /uri {...}
location @name
允許根據用戶請求的URI來匹配定義的各location,匹配到時,此請求將被相應的location塊中的配置所處理;
~~~
=: 精確匹配檢查;
^~:URI的前半部分匹配,不檢查正則表達式;不包含后面的參數
~: 正則表達式模式匹配,區分字符大小寫;
~*:正則表達式模式 匹配,不區分字符大小寫;
~~~
匹配優先級:精確匹配(=)、^~、~和~*、由不帶符號的URL進行左側匹配;

>[success]root
設置web資源路徑映射;用于指明請求的URL所對應的文檔的根目錄路徑;
~~~
location /images/ {
root "/web/imgs/";
}
~~~
www.example.com/images/ => www.example.com/web/imgs/images/
>[success]alias path
用于location配置段,定義路徑別名
~~~
location /images/ {
alias /www/pictures/;
}
location ~ /images/(.*)$ {
alias /www/pictures/$1;
}
~~~
www.example.com/images/ => www.example.com/www/pictures/
注意:root表示指明路徑為對應location的“ /” URL;alias表示路徑映射,即location中的URL是相對于alias所指明的路徑而言;
>[success]index file
默認主頁面
>[success]error_page code [...] [=code] URI | @name
根據http狀態碼重定向錯誤頁面
~~~
error_page 404 /404.html
~~~
=[code]: 以指定的響應碼進行響應;省略code表示以新資源的響應碼為響應碼;
>[success]try_files path1[,path2,...] URI
按順序檢測文件的存在性,返回第一個存在的文件;最后最后一個必須存在,否則導致Nginx內部錯誤
~~~
location / {
try_files $uri $uri/ =404;
}
~~~
這里指定狀態碼作為最后一個參數。
---
## 網絡連接相關的配置
>[success]keepalive_timeout time [time];
保持連接的超時時長,默認為65s;
第二個time是返回頭的Keep-Alive;
>[success]keepalive_requests #;
在一次保持連接上允許承載最大資源請求數;超過這個數量,連接將被關閉。
>[success]keepalive_disable [msie6|safari|none]
為指定類型的瀏覽器禁用長連接;
>[success]tcp_nodelay on|off
默認值: on
僅在長連接時生效;
當請求的資源很小,可以將多個資源合并發送(tcp_nodelay off),減少服務器開銷,但是用戶體驗會有延遲。
>[success]tcp_nopush on|off
默認值: off
僅在使用sendfile時生效,Nginx將會嘗試在單個報文中發送整個HTTP響應頭,
>[success]client_header_timeout time;
讀取http請求報文首部的超時時長;
>[success]client_body_timeout time;
默認值:60s
讀取http請求報文body部分的超時時長;
>[success]send_timeout time;
默認值:60s
發送響應報文的超時時長;兩個讀操作之間的超時時間,如果在這個時間內沒有進行任何操作,Nginx將關閉連接
>[success]resolver
設置DNS服務器
>[success]resolver_timeout
默認值:30s
域名查詢超時時間
## 對客戶端請求進行限制
>[success]limit_except METHOD {...}
指定對范圍之外的其它方法的訪問控制;
~~~
limit_except GET {
allow 172.16.0.0/16;
deny all;
}
~~~
>[success]client_body_max_size SIZE;
限制請求報文中body部分的上限;通過檢測請求報文首部中的"Content_Length"來判定;
>[success]limit_rate speed;
限制客戶端每秒種傳輸的字節數,默認為0,表示無限制;
>[success]satisfy
默認值:all
all表示所有都有效
any 至少有一個有效
## 對內存或磁盤資源進行分配
>[success]client_body_in_file_only on|clean|off;
請求報文的body部分是否可暫存于磁盤;on表示允許,并且即使請求結束,也不會刪除暫存的內容;clean表示會刪除;off不允許暫存;
>[success]client_body_in_single_buffer on|off
將客戶端請求保存在單個請求緩存中,當超出單個請求緩存的大小,仍會存在磁盤上。
>[success]client_body_buffer_size size;
默認值: 8k/16k
單個請求緩存的大小
>[success]client_body_temp_path DIR [level1 [level2 [level3 [level4]]]]
例如:client_body_temp_path /var/tmp/nginx/client 1 2 --> /var/tmp/nginx/client/1/22/1637182361782368
>[success]client_header_buffer_size size:
默認值: 1k
## 文件操作優化相關的配置
>[success]sendfile on|off;
>[success]aio on|off;
>[success]directio size|off;
是否使用O_DIRECT選項去請求讀取文件;與sendfile功能互斥;
>[success]open_file_cache max=N [inactive=time] | off;
默認值: off
nginx可以緩存以下三種信息:
(1) 文件句柄、文件大小和最近一次修改時間;
(2) 打開目錄的目錄結構;
(3) 沒有找到的或者沒有權限操作的文件的相關信息;
max=N表示可緩存的最大條目上限;一旦到達上限,則會使用LRU從緩存中刪除最近最少使用的條目;
inactive=time: 在inactive指定的時長內沒有被訪問過的緩存條目就會淘汰;
>[success]open_file_cache_errors on|off;
默認值: off
是否緩存在文件緩存中緩存打開文件時出現找不到路徑,沒有權限等的錯誤信息;
>[success]open_file_cache_min_uses number;
默認值: 1
在指定時間內一個文件被訪問的最少次數,如果大于這個值,文件描述符將被緩存。
>[success]internal
默認值:no
如果一個locationkaiqle這個值,那么這個location只能由**內部**訪問,外部訪問將返回404錯誤
* 由error_page重定向
* 由rewrite模塊重定向
示例表示不能直接訪問404錯誤頁面。
~~~
location ~ /404.html {
internal;
}
error_page 404 /404.html;
~~~
>[success]log_subrequest
默認值:off
在訪問日志中是否記錄子請求,子請求來自重寫或者SSI
[1]:http://nginx.org/en/docs/http/ngx_http_core_module.html
[2]:http://nginx.org/en/docs/http/ngx_http_core_module.html#variables
- nginx的功能
- nginx常用變量
- Nginx內核模塊
- Nginx的事件模塊
- Nginx的HTTP模塊
- Nginx的fastcgi
- nginx的proxy
- Upstream實現后臺服務器集群
- 文件操作優化相關的配置
- Nginx模塊管理和進程管理
- 模塊管理
- 進程管理
- 針對Nginx的Linux系統優化
- Nginx如何處理一個請求
- nginx狀態信息
- Nginx工具
- Nginx限制流量
- Nginx限制用戶的并發連接數
- 配置FLV服務器
- Nginx訪問控制
- Nginx自動索引
- Nginx網頁壓縮傳輸
- 控制Nginx如何記錄日志
- Nginx改寫響應
- Nginx重寫
- 后臺Nginx記錄原始原始IP
- Nginx防盜鏈
- Nginx的https