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