搜尋
首頁運維Nginxnginx怎麼負載平衡

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
NGINX單元:支持不同的編程語言NGINX單元:支持不同的編程語言Apr 16, 2025 am 12:15 AM

NGINXUnit支持多種編程語言,通過模塊化設計實現。 1.加載語言模塊:根據配置文件加載相應模塊。 2.應用啟動:調用語言運行時執行應用代碼。 3.請求處理:將請求轉發給應用實例。 4.響應返回:將處理後的響應返回給客戶端。

在Nginx和Apache之間進行選擇:適合您的需求在Nginx和Apache之間進行選擇:適合您的需求Apr 15, 2025 am 12:04 AM

NGINX和Apache各有優劣,適合不同場景。 1.NGINX適合高並發和低資源消耗場景。 2.Apache適合需要復雜配置和豐富模塊的場景。通過比較它們的核心特性、性能差異和最佳實踐,可以幫助你選擇最適合需求的服務器軟件。

nginx怎麼啟動nginx怎麼啟動Apr 14, 2025 pm 01:06 PM

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

怎麼查看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。

nginx怎麼關閉nginx怎麼關閉Apr 14, 2025 pm 01:00 PM

要關閉 Nginx 服務,請按以下步驟操作:確定安裝類型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服務:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自動啟動(可選):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

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

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

nginx403錯誤怎麼解決nginx403錯誤怎麼解決Apr 14, 2025 pm 12:54 PM

服務器無權訪問所請求的資源,導致 nginx 403 錯誤。解決方法包括:檢查文件權限。檢查 .htaccess 配置。檢查 nginx 配置。配置 SELinux 權限。檢查防火牆規則。排除其他原因,如瀏覽器問題、服務器故障或其他可能的錯誤。

linux怎麼啟動nginxlinux怎麼啟動nginxApr 14, 2025 pm 12:51 PM

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

See all articles

熱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.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具