首頁 運維 Nginx nginx怎麼負載平衡

nginx怎麼負載平衡

Jun 20, 2019 pm 03:47 PM
nginx 負載平衡

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; #開啟緩衝區

nginx怎麼負載平衡

###################################### # 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

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

linux怎麼查看nginx是否啟動 linux怎麼查看nginx是否啟動 Apr 14, 2025 pm 12:48 PM

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

linux怎麼啟動nginx linux怎麼啟動nginx Apr 14, 2025 pm 12:51 PM

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

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

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

nginx怎麼查看運行狀態 nginx怎麼查看運行狀態 Apr 14, 2025 am 11:48 AM

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

怎麼解決nginx跨域問題 怎麼解決nginx跨域問題 Apr 14, 2025 am 10:15 AM

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

nginx403怎麼解決 nginx403怎麼解決 Apr 14, 2025 am 10:33 AM

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

怎麼把nginx訪問地址設置成服務器ip 怎麼把nginx訪問地址設置成服務器ip Apr 14, 2025 am 11:36 AM

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

See all articles