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