首先,在閱讀《深刻理解Nginx模塊》後,大致瞭解了配置反向代理服務器一些常見的配置。以下進行說明:」html
l Nginx worker進程個數
語法: worker_processes number;
默認: worker_processes 1;
在master/worker運行方式下, 定義worker進程的個數。
worker進程的數量會直接影響性能。 那麼, 用戶配置多少個worker進程纔好呢? 這實際上與業務需求有關。
每一個worker進程都是單線程的進程, 它們會調用各個模塊以實現多種多樣的功能。 若是這些模塊確認不會出現阻塞式的調用, 那麼, 有多少CPU內核就應該配置多少個進程; 反之, 若是有可能出現阻塞式調用, 那麼須要配置稍多一些的worker進程。nginx
l 指定Nginx worker進程能夠打開的最大句柄描述符個數
語法: worker_rlimit_nofile limit;
設置一個worker進程能夠打開的最大文件句柄數。後端
l 選擇事件模型
語法: use[kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];
默認: Nginx會自動使用最適合的事件模型。
對於Linux操做系統來講, 可供選擇的事件驅動模型有poll、 select、 epoll三種。 epoll固然是性能最高的一種, 在9.6節會解釋epoll爲何能夠處理大併發鏈接。(由於異步+io複用)瀏覽器
l 每一個worker的最大鏈接數
語法: worker_connections number;
定義每一個worker進程能夠同時處理的最大鏈接數。緩存
l 開啓或者關閉gzip模塊服務器
語法: gzip on|off
默認值: gzip off
做用域: http, server, location, if (x) location
![if !supportLineBreakNewLine]>
併發
l gzip_comp_level gzip壓縮比
語法: gzip_comp_level 1..9
默認值: gzip_comp_level 1
做用域: http, server, location
gzip壓縮比,1 壓縮比最小處理速度最快,9 壓縮比最大但處理最慢(傳輸快但比較消耗cpu)。異步
l HTTP請求包體的最大值性能
語法: client_max_body_size size;
默認: client_max_body_size 1m;
配置塊: http、 server、 location
瀏覽器在發送含有較大HTTP包體的請求時, 其頭部會有一個Content-Length字段,client_max_body_size是用來限制Content-Length所示值的大小的。 所以, 這個限制包體的配置很是有用處, 由於不用等Nginx接收完全部的HTTP包體——這有可能消耗很長時間——就能夠告訴用戶請求過大不被接受。 例如, 用戶試圖上傳一個10GB的文件, Nginx在收完包頭後, 發現Content-Length超過client_max_body_size定義的值, 就直接發送413("Request EntityToo Large")響應給客戶端url
l 存儲HTTP頭部的內存buffer大小
語法: client_header_buffer_size size;
默認: client_header_buffer_size 1k;
配置塊: http、 server
上面配置項定義了正常狀況下Nginx接收用戶請求中HTTP header部分(包括HTTP行和HTTP頭部) 時分配的內存buffer大小。
l proxy_connect_timeout
後端服務器鏈接的超時時間_發起握手等候響應超時時間
l proxy_read_timeout
鏈接成功後_等候後端服務器響應時間_其實已經進入後端的排隊之中等候處理(也能夠說是後端服務器處理請求的時間)
l proxy_send_timeout
後端服務器數據回傳時間_就是在規定時間以內後端服務器必須傳完全部的數據
l proxy_buffering
proxy_buffering 開啓的時候,proxy_buffers 和proxy_busy_buffers_size 纔會起做用,不管proxy_buffering 是否開啓,proxy_buffer_size 都起做用。
l proxy_buffer_size
proxy_buffer_size 用來接受後端服務器 response 的第一部分,小的response header 一般位於這部分響應內容裏邊。默認proxy_buffer_size 被設置成 proxy_buffers 裏一個buffer 的大小,固然能夠設置更小些。
① 若是 proxy_buffers 關閉
Nginx不會嘗試獲取到後端服務器全部響應數據以後才返回給客戶端,Nginx 會盡快把數據傳給客戶端,在數據傳完以前,Nginx 接收到的最大緩存大小不能超過 proxy_buffer_size 。
② 若是 proxy_buffers 打開
Nginx將會盡量的讀取後端服務器的數據到buffer,直到proxy_buffers設置的全部buffer們被寫滿或者數據被讀取完(EOF),此時Nginx開始向客戶端傳輸數據,會同時傳輸這一整串buffer們。若是數據很大的話,Nginx會接收並把他們寫入到temp_file裏去,大小由proxy_max_temp_file_size 控制。「當數據沒有徹底讀完的時候」,Nginx同時向客戶端傳送的buffer 大小 不能超過 proxy_busy_buffers_size 「此句可能理解有誤」。
l proxy_busy_buffers_size:
當緩存後端服務器的配置被打開時,該項限定,當已經被send的response沒有被徹底read,此時可用busy_buffers,而size限定這個buffer的大小,固然須要的話,部分的response能夠也能夠寫到temp_file裏。
l location
語法: location[=|~|~*|^~|@]/uri/{...}
配置塊: server
location會嘗試根據用戶請求中的URI來匹配上面的/uri表達式, 若是能夠匹配, 就選擇location{}塊中的配置來處理用戶請求。
nginx是經過alias設置虛擬目錄,在nginx的配置中,alias目錄和root目錄是有區別的:
1)alias指定的目錄是準確的,即location匹配訪問的path目錄下的文件直接是在alias目錄下查找的;
2)root指定的目錄是location匹配訪問的path目錄的上一級目錄,這個path目錄必定要是真實存在root指定目錄下的;
3)使用alias標籤的目錄塊中不能使用rewrite的break(具體緣由不明);另外,alias指定的目錄後面必需要加上"/"符號!!
4)alias虛擬目錄配置中,location匹配的path目錄若是後面不帶"/",那麼訪問的url地址中這個path目錄後面加不加"/"不影響訪問,訪問時它會自動加上"/";
可是若是location匹配的path目錄後面加上"/",那麼訪問的url地址中這個path目錄必需要加上"/",訪問時它不會自動加上"/"。若是不加上"/",訪問就會失敗!
5)root目錄配置中,location匹配的path目錄後面帶不帶"/",都不會影響訪問。
舉例:
location /huan/ {
alias /home/www/huan/;
}
在上面alias虛擬目錄配置下,訪問http://www.wangshibo.com/huan/a.html實際指定的是/home/www/huan/a.html。
注意:alias指定的目錄後面必需要加上"/",即/home/www/huan/不能改爲/home/www/huan
上面的配置也能夠改爲root目錄配置,以下,這樣nginx就會去/home/www/huan下尋找http://www.wangshibo.com/huan的訪問資源,二者配置後的訪問效果是同樣的!
location /huan/ {
root /home/www/;
}
這邊不是很理解,大概是重定向/50x.html到root path下的頁面吧,後來才知道,這樣設置,應該去nginx下面的目錄找html目錄,果真找到了50x.html
l 嵌入其餘配置文件
語法: include pathfile;
include配置項能夠將其餘配置文件嵌入到當前的nginx.conf文件中, 它的參數既能夠是絕對路徑, 也能夠是相對路徑(相對於Nginx的配置目錄, 即nginx.conf所在的目錄) , 例如:
include mime.types;
include vhost/*.conf;
能夠看到, 參數的值能夠是一個明確的文件名, 也能夠是含有通配符*的文件名, 同時能夠一次嵌入多個配置文件。
l allow
語法:allow address |CIDR|unix:|all:
默認值:None
區間:http,server,location,limit_except
容許一個ip或者ip段訪問
l deny
語法:deny address |CIDR|unix:|all:
默認值:None
區間:http,server,location,limit_except
禁止一個ip或者ip段訪問
l proxy_pass
這個指令設置被代理服務器的地址和被映射的URI