nginx同apache一樣都是一種web伺服器。基於rest架構風格,以統一資源描述符(uniform resources identifier)uri或者統一資源定位符(uniform resources locator)url作為溝通依據,通過http協議提供各種網路服務。
1.反向**,區別於正向**。
客戶端是無感知**的存在的,反向**對外都是透明的,訪問者並不知道自己訪問的是乙個**。因為客戶端不需要任何配置就可以訪問。
反向**,"它**的是服務端,代服務端接收請求",主要用於伺服器集群分布式部署的情況下,反向**隱藏了伺服器的資訊。
2.負載均衡
我們已經明確了所謂**伺服器的概念,那麼接下來,nginx扮演了反向**伺服器的角色,它是以依據什麼樣的規則進行請求分發的呢?不用的專案應用場景,分發的規則是否可以控制呢?
這裡提到的客戶端傳送的、nginx反向**伺服器接收到的請求數量,就是我們說的負載量。
請求數量按照一定的規則進行分發到不同的伺服器處理的規則,就是一種均衡規則。
所以~將伺服器接收到的請求按照規則分發的過程,稱為負載均衡。
負載均衡在實際專案操作過程中,有硬體負載均衡和軟體負載均衡兩種,硬體負載均衡也稱為硬負載,如f5負載均衡,相對造價昂貴成本較高,但是資料的穩定性安全性等等有非常好的保障,如中國移動中國聯通這樣的公司才會選擇硬負載進行操作;更多的公司考慮到成本原因,會選擇使用軟體負載均衡,軟體負載均衡是利用現有的技術結合主機硬體實現的一種訊息佇列分發機制。
nginx支援的負載均衡排程演算法方式如下:
weight輪詢(預設,常用):接收到的請求按照權重分配到不同的後端伺服器,即使在使用過程中,某一台後端伺服器宕機,nginx會自動將該伺服器剔除出佇列,請求受理情況不會受到任何影響。 這種方式下,可以給不同的後端伺服器設定乙個權重值(weight),用於調整不同的伺服器上請求的分配率;權重資料越大,被分配到請求的機率越大;該權重值,主要是針對實際工作環境中不同的後端伺服器硬體配置進行調整的。
ip_hash(常用):每個請求按照發起客戶端的ip的hash結果進行匹配,這樣的演算法下乙個固定ip位址的客戶端總會訪問到同乙個後端伺服器,這也在一定程度上解決了集群部署環境下session共享的問題。
fair:智慧型調整排程演算法,動態的根據後端伺服器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的伺服器分配到請求的概率高,響應時間長處理效率低的伺服器分配到的請求少;結合了前兩者的優點的一種排程演算法。但是需要注意的是nginx預設不支援fair演算法,如果要使用這種排程演算法,請安裝upstream_fair模組。
url_hash:按照訪問的url的hash結果分配請求,每個請求的url會指向後端固定的某個伺服器,可以在nginx作為靜態伺服器的情況下提高快取效率。同樣要注意nginx預設不支援這種排程演算法,要使用的話需要安裝nginx的hash軟體包。
具體使用方法:
Nginx 相關介紹
nginx同apache一樣都是一種web伺服器。基於rest架構風格,以統一資源描述符 uniform resources identifier uri或者統一資源定位符 uniform resources locator url作為溝通依據,通過http協議提供各種網路服務。apache的發展時...
Nginx 相關介紹
沒有聽過nginx?那麼一定聽過它的 同行 apache吧!nginx同apache一樣都是一種web伺服器。基於rest架構風格,以統一資源描述符 uniform resources identifier uri或者統一資源定位符 uniform resources locator url作為溝通...
Nginx 相關介紹
沒有聽過nginx?那麼一定聽過它的 同行 apache吧!nginx同apache一樣都是一種web伺服器。基於rest架構風格,以統一資源描述符 uniform resources identifier uri或者統一資源定位符 uniform resources locator url作為溝通...