Nginx應該是如今最火的web和反向代理服務器,沒有之一。node
她是一款誕生於俄羅斯的高性能web服務器,尤爲在高併發狀況下,相較Apache,有優異的表現。那除了負載均衡,她還有什麼其餘的用途呢,下面咱們來看下。nginx
1、靜態代理web
Nginx擅長處理靜態文件,是很是好的圖片、文件服務器。把全部的靜態資源的放到nginx上,可使應用動靜分離,性能更好。算法
2、負載均衡後端
Nginx經過反向代理能夠實現服務的負載均衡,避免了服務器單節點故障,把請求按照必定的策略轉發到不一樣的服務器上,達到負載的效果。經常使用的負載均衡策略有,瀏覽器
一、輪詢緩存
將請求按順序輪流地分配到後端服務器上,它均衡地對待後端的每一臺服務器,而不關心服務器實際的鏈接數和當前的系統負載。服務器
二、加權輪詢併發
不一樣的後端服務器可能機器的配置和當前系統的負載並不相同,所以它們的抗壓能力也不相同。給配置高、負載低的機器配置更高的權重,讓其處理更多的請;而配置低、負載高的機器,給其分配較低的權重,下降其系統負載,加權輪詢能很好地處理這一問題,並將請求順序且按照權重分配到後端。負載均衡
三、ip_hash(源地址哈希法)
根據獲取客戶端的IP地址,經過哈希函數計算獲得一個數值,用該數值對服務器列表的大小進行取模運算,獲得的結果即是客戶端要訪問服務器的序號。採用源地址哈希法進行負載均衡,同一IP地址的客戶端,當後端服務器列表不變時,它每次都會映射到同一臺後端服務器進行訪問。
四、隨機
經過系統的隨機算法,根據後端服務器的列表大小值來隨機選取其中的一臺服務器進行訪問。
五、least_conn(最小鏈接數法)
因爲後端服務器的配置不盡相同,對於請求的處理有快有慢,最小鏈接數法根據後端服務器當前的鏈接狀況,動態地選取其中當前積壓鏈接數最少的一臺服務器來處理當前的請求,儘量地提升後端服務的利用效率,將負責合理地分流到每一臺服務器。
3、限流
Nginx的限流模塊,是基於漏桶算法實現的,在高併發的場景下很是實用。
一、配置參數
1)limit_req_zone定義在http塊中,$binary_remote_addr 表示保存客戶端IP地址的二進制形式。
2)Zone定義IP狀態及URL訪問頻率的共享內存區域。zone=keyword標識區域的名字,以及冒號後面跟區域大小。16000個IP地址的狀態信息約1MB,因此示例中區域能夠存儲160000個IP地址。
3)Rate定義最大請求速率。示例中速率不能超過每秒100個請求。
二、設置限流
burst排隊大小,nodelay不限制單個請求間的時間。
4、緩存
一、瀏覽器緩存,靜態資源緩存用expire。
二、代理層緩存
5、黑白名單
一、不限流白名單
二、黑名單
好了,上面就是nginx幾個經常使用功能,靜態分離、負載均衡、限流、緩存、黑白名單等,你都瞭解了嗎?
最後給你們分享一份【Nginx實戰】的文檔資料,轉發此文並關注小編,而後加入羣(Java填坑之路)789337293 便可免費獲取到!