了解最新公司動(dòng)態(tài)及行業(yè)資訊
1.反向代理
反向代理應(yīng)該是 Nginx 做的最多的事情之一。哪些是反向代理?簡(jiǎn)單來(lái)說(shuō),真實(shí)服務(wù)器是不能被外網(wǎng)直接訪問(wèn)的,所以需要一個(gè)代理服務(wù)器,而代理服務(wù)器可以被外網(wǎng)訪問(wèn),并且和真實(shí)服務(wù)器處于同一個(gè)網(wǎng)絡(luò)環(huán)境中。其實(shí)可能是同一臺(tái)服務(wù)器,不同的端口。
下面貼出實(shí)現(xiàn)反向代理的簡(jiǎn)單代碼-
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; }}
保存配置文件后啟動(dòng)Nginx,所以我們?cè)L問(wèn)的時(shí)候就相當(dāng)于訪問(wèn):8080。
2.負(fù)載平衡
負(fù)載均衡也是Nginx的一個(gè)常用功能。負(fù)載均衡是指分散在多個(gè)運(yùn)行單元上執(zhí)行,如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器等關(guān)鍵任務(wù)服務(wù)器服務(wù)器運(yùn)維,從而共同完成工作任務(wù)。簡(jiǎn)單來(lái)說(shuō),當(dāng)有兩臺(tái)或多臺(tái)服務(wù)器時(shí),請(qǐng)求按照規(guī)則隨機(jī)分發(fā)到指定的服務(wù)器上進(jìn)行處理。負(fù)載均衡配置通常需要同時(shí)配置反向代理,反向代理用于跳轉(zhuǎn)到負(fù)載均衡。 Nginx 目前支持 3 種負(fù)載均衡策略和 2 種常用的第三方策略。
1、RR(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序一一分配給不同的前端服務(wù)器。如果前端服務(wù)器宕機(jī),可以手動(dòng)排除。
upstream test { server localhost:8080; server localhost:8081; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } }
負(fù)載均衡的核心代碼是-
upstream test { server localhost:8080; server localhost:8081; }
2、權(quán)重
指定協(xié)程概率,與訪問(wèn)百分比成反比服務(wù)器運(yùn)維,在前端服務(wù)器性能不均衡時(shí)使用。比如
通常10次中只有1次會(huì)訪問(wèn)8081,9次會(huì)訪問(wèn)8080-
3、(按住)
這里面的兩種形式有一個(gè)問(wèn)題,就是下一個(gè)請(qǐng)求來(lái)的時(shí)候,請(qǐng)求可能會(huì)分發(fā)到另外一個(gè)服務(wù)器上。當(dāng)我們的程序不是無(wú)狀態(tài)的(使用保存數(shù)據(jù))的時(shí)候,這個(gè)時(shí)候就出現(xiàn)了很大的問(wèn)題。例如登錄信息保存在 中,所以當(dāng)你跳轉(zhuǎn)到另一個(gè)服務(wù)器時(shí),你需要重新登錄。很多時(shí)候,我們需要一個(gè)客戶只訪問(wèn)一臺(tái)服務(wù)器。需要使用,每個(gè)請(qǐng)求根據(jù)訪問(wèn)ip的hash結(jié)果分配,讓每個(gè)訪問(wèn)者對(duì)前端服務(wù)器有固定的訪問(wèn)權(quán)限,可以解決問(wèn)題。
upstream test { ip_hash; server localhost:8080; server localhost:8081; }
4、公平(第三方)
根據(jù)前端服務(wù)器的響應(yīng)時(shí)間分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先。
upstream backend { fair; server localhost:8080; server localhost:8081; }
5、(第三方)
根據(jù)訪問(wèn)url的hash結(jié)果分配請(qǐng)求,使每個(gè)url指向同一個(gè)前端服務(wù)器,在前端服務(wù)器緩存的情況下更有效。句中加一個(gè)hash語(yǔ)句,其他參數(shù)如不能寫在句中,就是使用的hash算法
upstream backend { hash $request_uri; hash_method crc32; server localhost:8080; server localhost:8081; }
24小時(shí)免費(fèi)咨詢
請(qǐng)輸入您的聯(lián)系電話,座機(jī)請(qǐng)加區(qū)號(hào)