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

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

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

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

要關閉 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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具