nginx怎麼負載平衡
一、Nginx反向代理
在介紹nginx的負載平衡之前,我們先來介紹nginx的反向代理,因為反向代理用的比較多,所以,這裡我們就不介紹正向代理了。
nginx的代理程式,就是將請求傳送給nginx,然後將請求轉送給後端伺服器,後端伺服器處理完畢之後將結果再發給nginx,nginx再把結果傳送給客戶端。後端伺服器可在遠端也可在本機,也可以是nginx伺服器內部定義的其他虛擬主機。這些接收nginx轉送的伺服器被稱為上游(upstream)
使用nginx做代理的目的之一是擴展基礎架構的規模。 nginx可以處理大量並發連接,請求到來後,nginx可將其轉發給任意數量的後台伺服器進行處理,這等於將負載平衡分散到整個叢集。
語法:proxy_pass URL
解釋:URL的形式可以如下:http://location:8000/uri/等,可在location中進行設定。
範例:我們來寫一個簡單的反向代理:
#在我80埠監聽的目錄下沒有test_proxy的文件,但在我8080埠監聽目錄下有,我在80埠的server裡面加入如下內容:
location ~ /test_proxy.html$ {proxy_pass http://127.0.0.1:8080;
}###################然後在瀏覽器上輸入http://IP位址/test_proxy.html,會出現請求的訊息,實際上是80埠轉送給了8080埠並把資料請求了回來。 #####################二、緩衝##########nginx也提供了緩衝的機制,用於提高效能。沒有緩衝的情況下,資料直接從後端伺服器傳送給客戶端。緩衝的作用是在nginx上暫時儲存來自後端伺服器的處理結果,從而可以提早關閉nginx到後端的連接,減少IO的損耗。一般內容存放在記憶體當中,但當內容過多,造成的記憶體不夠時,會把內容存放在暫存文件目錄下。以下是一些常用的緩衝的配置項,可以再http、server和location內容區塊下。
proxy_buffering:控製本內容區塊下是否啟用緩衝,預設為"on"。
proxy_buffers:有兩個參數,第一個控制緩衝區請求數量,第二個控制緩衝區大小。預設值為8個、一頁(一般是4k或8k)。這個值越大,緩衝的內容就越多。
proxy_buffer_size:後端回覆結果的首段(包含header的部分)是單獨緩衝的,此配置就是配置這部分緩衝區的大小。這個值預設與proxy_buffer的值相同,我們可以把它設定得小一些,因為header內容一般比較少。
proxy_busy_buffers_size:設定被標記為"client-ready"(客戶端就緒)的緩衝區大小。客戶端一次只能從一個緩衝讀取數據,而緩衝是按照佇列次序被分批傳送給客戶端的。此語法配置的就是這個佇列的大小。
proxy_temp_path:定義nginx儲存暫存檔案路徑。
proxy_max_temp_file_size:每個要求可以儲存暫存檔案的目錄大小。如果上游發出的結果太大以至於無法放入一個緩衝,則nginx會為其建立暫存檔案。
三、負載平衡
#設定語法:upstream name {.......}
解釋:name是自訂的名字,而{}則是需要定義的內容,只能在http區塊定義,不能在server區塊裡定義。定義完之後可在location區塊下寫入如下程式碼進行呼叫:http://name。
範例:由於伺服器數量的限制,這裡我們是用一台伺服器的不同的連接埠來模擬負載平衡,當然,多台的配置也是差不多的。
在server區塊內加入如下程式碼:
upstream test {#ip_hash server IP:8001; server IP:8002; server IP:8003; }
然後,我們在http區塊內的location中加入以下內容:
location / {#設定主機頭和客戶端真實位址,以便伺服器取得客戶端真實IPproxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 30;## proxy_connect_timeout 30;## proxy_connect_timeout 30;## proxy_connect_timeout 30;#設定連線逾時時間為#30s#"#. 60; proxy_read_timeout 60; proxy_buffer_size 32k; #設定緩衝區大小 proxy_buffering on; #開啟緩衝區
###################################### # proxy_buffers 4 128k; #設定緩衝區的數目與大小###### proxy_busy_buffers_size 256k; #設定客戶端就緒緩衝區大小###### proxy_max_temp_file_size 256k;###### proxy_max_temp_file_size 256k;###### proxy_pass http://test; #呼叫上面設定的負載平衡 ######}###################當然,得提醒一下,我們設定的IP的連接埠是事先在設定檔裡配置好的。例如如下的配置。 #####################然後,我們存取我們的主機位址,然後不斷的刷新,會發現出來每個連接埠出來的頁面資訊。預設的負載平衡採用的是輪詢的方式。 ##################如果是用的不同的伺服器進行負載平衡的話,只需稍稍改改,就例如如下配置:######### #####################
upstream mydomain.com{server 47.95.242.167:80; server 47.95.242.168:80; server 47.95.242.169:80; server 47.95.242.169:800; }
設定完之後呢,剩下的在http裡的程式碼和上面的相似,然後在其他的三個伺服器那裡進行如下配置。當然,我們還得在那三個伺服器那裡的防火牆進行設定。
#server{listen 80; server_name www.mydomain.com; #index index.htm index.php index.html; root 目錄路徑;##}
#'
①後端伺服器在負載平衡調度中的狀態dowm:當前的server暫時不參與負載平衡。
backup:預留的備份伺服器。
######max_fails:###允許請求失敗的次數。 #####################fail_timeout:###經過max_fails失敗後,伺服器暫停的時間。 #####################max_conns:###限制最大的接收連線數。 ##################註:以上的設定都是在upstream的時候設定的,例如在{}裡面加入的server IP:8001 dowm,就表示這個服務是不參與負載平衡的,用來做備份的,以上配置都是寫在服務的後面。 #####################②調度演算法################輪詢:按時間順序逐一分配到不同的後端伺服器。
加權輪詢:可在設定的server後面加個weight=number,number值越高,分配的機率越大。
ip_hash:每個請求按存取IP的hash分配,這樣來自同一IP固定存取一個後台伺服器。
least_hash:最少連結數,哪個機器連線數少就發給哪個機器。
url_hash:按存取的url的hash結果分配請求,是每個url定向到同一後端伺服器上。
hash關鍵值:hash自訂的key。
註:調度演算法在設定upstream中配置,例如在此大括號裡面寫入ip_hash表示使用ip_hash的方式分配
更多Nginx相關技術文章,請造訪Nginx教學#欄位學習!
以上是nginx怎麼負載平衡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

在 Linux 中,使用以下命令檢查 Nginx 是否已啟動:systemctl status nginx根據命令輸出進行判斷:如果顯示 "Active: active (running)",則 Nginx 已啟動。如果顯示 "Active: inactive (dead)",則 Nginx 已停止。

在 Linux 中啟動 Nginx 的步驟:檢查 Nginx 是否已安裝。使用 systemctl start nginx 啟動 Nginx 服務。使用 systemctl enable nginx 啟用在系統啟動時自動啟動 Nginx。使用 systemctl status nginx 驗證啟動是否成功。在 Web 瀏覽器中訪問 http://localhost 查看默認歡迎頁面。

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。

解決 Nginx 跨域問題有兩種方法:修改跨域響應頭:添加指令以允許跨域請求,指定允許的方法和頭,以及設置緩存時間。使用 CORS 模塊:啟用模塊並配置 CORS 規則,允許跨域請求、方法、頭和設置緩存時間。

如何解決 Nginx 403 Forbidden 錯誤?檢查文件或目錄權限;2. 檢查 .htaccess 文件;3. 檢查 Nginx 配置文件;4. 重啟 Nginx。其他可能原因還包括防火牆規則、SELinux 設置或應用程序問題。

要在 Nginx 中將訪問地址設置為服務器 IP,請:配置服務器塊,設置監聽地址(如:listen 192.168.1.10:80)設置服務器名稱(如:server_name example.com www.example.com),或將其留空以訪問服務器 IP保存並重新加載 Nginx 以應用更改
