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