Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。html
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。node
nginx處理請求是異步非阻塞,事件驅動的,因此在高併發的狀況下,依然有很好的性能。nginx
非阻塞:把整個過程切換成小的任務,經過任務間協做完成。 由一個專門的線程來處理全部的 IO 事件,並負責分發。web
事件驅動:經過事件的觸發來調用,而不是異步監視。算法
在計算機網絡中,反向代理是代理服務器的一種。服務器根據客戶端的請求,從其關係的一組或多組後端服務器(如Web服務器)上獲取資源,而後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP地址,而不知道在代理服務器後面的服務器簇的存在。後端
一句話總結,反向代理就是服務器找服務器,而不是客戶端找服務器的前向代理。服務器
events { worker_connections 1024; //nginx默認鏈接數 }
upstream test.top{//集羣的名字
ip_hash;//nginx的策略之一
#server 192.168.1.63:8081 weight=1;//weight權重,數字越大被使用的概率越高。
#server 39.98.245.21:8080;
.
.
.//能夠配置無限多個服務器
}
server {
listen 80;//nginx監聽的端口
server_name localhost;網絡
#location / {
#root html;
#index index.html index.htm;
#}併發
location / {負載均衡
proxy_pass http://test.top;
proxy_redirect default;
}
}
權重配置:
weight和請求數量成正比,主要用於上游服務器配置不均衡的狀況。下面的配置中,192.168.10.2機器的請求量是192.168.10.1機器請求量的2倍。
upstream test.top {
server 192.168.10.1:8668 weight=5;
server 192.168.10.2:8668 weight=10;
}
ip_hash配置:
每個請求按照請求的ip的hash結果分配。這樣每個請求固定落在一個上游服務器,可以解決ip會話在同一臺服務器的問題。
upstream nodes {
ip_hash;
server 192.168.10.1:8668;
server 192.168.10.2:8668;
}
fair配置:
按上游服務器的響應時間來分配請求。響應時間短的優先分配。
upstream nodes {
server 192.168.10.1:8668;
server 192.168.10.2:8668;
fair;
}
url_hash配置:
按照訪問的url的hash結果來分配請求,使每個url定向到同一個上游服務器。注意:在upstream中加入hash語句。server語句中不能寫入weight等其餘的參數,hash_method是使用的hash算法。
upstream nodes {
server 192.168.10.1:8668;
server 192.168.10.2:8668;
hash $request_uri;
hash_method crc32;
}
upstream中經常使用的配置項:
down:表示當前的server不參與負載均衡。
weight:默以爲1,weight越大,負載的權重就越大。
max_fails :請求失敗的次數默以爲1。
fail_timeout : max_fails次失敗後,暫停請求此臺服務器的時間。
backup: 其餘所有的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕。
upstream nodes {
ip_hash;
server 192.168.10.1:8668 down;
server 192.168.10.2:8668 weight=2;
server 192.168.10.3:8668;
server 192.168.10.4:8668 backup;
}