除了負(fù)載均衡,Nginx 還可以做很多:限流、緩存、黑白名單等
Nginx應(yīng)該是現(xiàn)在最火的web和反向代理服務(wù)器,沒有之一。她是一款誕生于俄羅斯的高性能web服務(wù)器,尤其在高并發(fā)情況下,相較Apache,有優(yōu)異的表現(xiàn)。
那除了負(fù)載均衡,她還有什么其他的用途呢,下面我們來看下。
一、靜態(tài)代理
Nginx擅長處理靜態(tài)文件,是非常好的圖片、文件服務(wù)器。把所有的靜態(tài)資源的放到nginx上,可以使應(yīng)用動靜分離,性能更好。
二、負(fù)載均衡
Nginx通過反向代理可以實現(xiàn)服務(wù)的負(fù)載均衡,避免了服務(wù)器單節(jié)點故障,把請求按照一定的策略轉(zhuǎn)發(fā)到不同的服務(wù)器上,達(dá)到負(fù)載的效果。常用的負(fù)載均衡策略有
1、輪詢
將請求按順序輪流地分配到后端服務(wù)器上,它均衡地對待后端的每一臺服務(wù)器,而不關(guān)心服務(wù)器實際的連接數(shù)和當(dāng)前的系統(tǒng)負(fù)載。
2、加權(quán)輪詢
不同的后端服務(wù)器可能機器的配置和當(dāng)前系統(tǒng)的負(fù)載并不相同,因此它們的抗壓能力也不相同。
給配置高、負(fù)載低的機器配置更高的權(quán)重,讓其處理更多的請求;而配置低、負(fù)載高的機器,給其分配較低的權(quán)重,降低其系統(tǒng)負(fù)載
加權(quán)輪詢能很好地處理這一問題,并將請求順序且按照權(quán)重分配到后端。
3、ip_hash(源地址哈希法)
根據(jù)獲取客戶端的IP地址,通過哈希函數(shù)計算得到一個數(shù)值,用該數(shù)值對服務(wù)器列表的大小進(jìn)行取模運算,得到的結(jié)果便是客戶端要訪問服務(wù)器的序號。
采用源地址哈希法進(jìn)行負(fù)載均衡,同一IP地址的客戶端,當(dāng)后端服務(wù)器列表不變時,它每次都會映射到同一臺后端服務(wù)器進(jìn)行訪問。
4、隨機
通過系統(tǒng)的隨機算法,根據(jù)后端服務(wù)器的列表大小值來隨機選取其中的一臺服務(wù)器進(jìn)行訪問。
5、least_conn(最小連接數(shù)法)
由于后端服務(wù)器的配置不盡相同,對于請求的處理有快有慢,最小連接數(shù)法根據(jù)后端服務(wù)器當(dāng)前的連接情況,動態(tài)地選取其中當(dāng)前積壓連接數(shù)最少的一臺服務(wù)器來處理當(dāng)前的請求,盡可能地提高后端服務(wù)的利用效率,將負(fù)責(zé)合理地分流到每一臺服務(wù)器。
三、限流
Nginx的限流模塊,是基于漏桶算法實現(xiàn)的,在高并發(fā)的場景下非常實用。
1、配置參數(shù)
1)limit_req_zone定義在http塊中,$binary_remote_addr 表示保存客戶端IP地址的二進(jìn)制形式。
2)Zone定義IP狀態(tài)及URL訪問頻率的共享內(nèi)存區(qū)域。zone=keyword標(biāo)識區(qū)域的名字,以及冒號后面跟區(qū)域大小。16000個IP地址的狀態(tài)信息約1MB,所以示例中區(qū)域可以存儲160000個IP地址。
3)Rate定義最大請求速率。示例中速率不能超過每秒100個請求。
2、設(shè)置限流
burst排隊大小,nodelay不限制單個請求間的時間。
四、緩存
1、瀏覽器緩存,靜態(tài)資源緩存用expire。
2、代理層緩存
五、黑白名單
1、不限流白名單
2、黑名單
好了,上面就是nginx幾個常用功能,靜態(tài)分離、負(fù)載均衡、限流、緩存、黑白名單等,你都了解了嗎?
作者:技術(shù)大咖秀
https://www.toutiao.com/i6692127248272589315/
特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點個在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!