初次接觸到Nginx,只是一個快速入門的學習筆記記錄,
文章目錄
- 參考鏈接
- Nginx的概念
- Nginx的作用一:反向代理
- 什么是正向代理
- 正向代理的用途
- 什么是反向代理
- Nginx的作用二:負載均衡
- 什么是負載均衡
- Nginx支持的負載均衡調度演算法
- Nginx的作用二:動靜分離
- 什么是動態分離
- 動態請求和靜態請求
參考鏈接
- 參考1
- 參考2
- 參考3
- 參考4
Nginx的概念
- Nginx (engine x) 是一個
高性能的HTTP和反向代理web服務器或者說輕量級高并發服務器,同時也提供了IMAP/POP3/SMTP服務,Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布于2004年10月4日,2011年6月1日,nginx 1.0.4發布, - 其特點是
占有記憶體少,并發能力強,事實上nginx的并發能力在同型別的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等,在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站, - Nginx 是一個
安裝非常的簡單、組態檔非常簡潔(還能夠支持perl語法)、Bug非常少的服務,Nginx 啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動,你還能夠不間斷服務的情況下進行軟體版本的升級,
Nginx的作用一:反向代理
什么是正向代理
- 正向代理的概念:VPN是一個正向代理的例子,
正向代理最大的特點是客戶端非常明確要訪問的服務器地址;服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端資訊, - 總而言之:正向代理,“它代理的是客戶端”,是一個位于客戶端和原始服務器(Origin Server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容回傳給客戶端,客戶端必須要進行一些特別的設定才能使用正向代理,
正向代理的用途
訪問原來無法訪問的資源,如 Google,- 可以
做快取,加速訪問資源, - 對客戶端訪問授權,
上網進行認證, - 代理可以
記錄用戶訪問記錄(上網行為管理),對外隱藏用戶資訊,
什么是反向代理
- 在實際場景中:例如我國的某寶網站,每天同時連接到網站的訪問人數已經爆表,單個服務器遠遠不能滿足人民日益增長的購買欲望了,此時就出現了一個大家耳熟能詳的名詞:
分布式部署;也就是通過部署多臺服務器來解決訪問人數限制的問題,某寶網站中大部分功能也是直接使用 Nginx 進行反向代理實作的,并且通過封裝 Nginx 和其他的組件之后起了個高大上的名字:Tengine,

- 在上圖中
,多個客戶端給服務器發送的請求,Nginx 服務器接收到之后,按照一定的規則分發給了后端的業務處理服務器進行處理了此時請求的來源也就是客戶端是明確的,但是請求具體由哪臺服務器處理的并不明確了,Nginx 扮演的就是一個反向代理角色,客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理,因為客戶端不需要任何配置就可以訪問, - 反向代理,“它代理的是服務端”,主要用于服務器集群分布式部署的情況下,
反向代理隱藏了服務器的資訊,

Nginx的作用二:負載均衡
什么是負載均衡
- 這里提到的客戶端發送的、Nginx 反向代理服務器接收到的請求數量,就是我們說的
負載量, 請求數量按照一定的規則進行分發,到不同的服務器處理的規則,就是一種均衡規則,總結:所以將服務器接收到的請求按照規則分發的程序,稱為負載均衡,- 硬體負載均衡和軟體負載均衡就不多說明了(待補充)
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的作用二:動靜分離
什么是動態分離
- 在我們的軟體開發中,有些請求是需要后臺處理的,有些請求是不需要經過后臺處理的(如:css、html、jpg、js等等檔案),這些不需要經過后臺處理的檔案稱為靜態檔案,
讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做快取操作,提高資源回應的速度,

動態請求和靜態請求
- 什么是動態請求?
- 比如說我們需要去
查詢資料庫,從資料庫中回傳需要的資訊,那么這種請求我們就可以使用 nginx 直接給轉發到 tomcat 去處理,這種請求也叫動態請求 - 什么是靜態請求?
- 比如說我們現在需要去
請求得到一個圖片的地址,或者得到一個 html 檔案,這種請求就叫靜態請求,這時候就可以使用 nginx ,把請求去指向一個靜態資源服務器,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/306026.html
標籤:其他
