nginx的反向代理的優勢,特點於原理(一)


說到反向代理,首先先說一下反向代理的概念

反向代理(Reverse Proxy)方式是指以代理服務器來接受客戶端的連接請求,然后將請求轉發給網絡上的web服務器(可能是apache,nginx,tomcat,iis等)並將web服務器上得到的結果返回給請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

nginx是一款輕量級的網頁服務器/反向代理以及電子郵件代理服務器。因它的穩定性,和豐富的功能集,示例配置文件和低系統資源的消耗而文明。

nginx的核心特點

①跨平台:nginx可以在大多數OS編譯運行,而且也有windows的版本

②部署:配置簡單,容易上手

③非阻塞。高並發連接:官方測試能夠支撐5萬並發連接,在實際生產環境能跑到2到3萬並發連接數。(這屈居於nginx使用的最新epoll模型);非阻塞調用指在不能立刻得到結果之前,該調用不阻塞當前線程。(就比如自己的媽媽在做飯,在飯做好的期間,你可以干任何事情,而不用干等着飯菜做好)

④事件驅動:nginx通信采用epoll模型,支持更大的並發連接。非阻塞通過不斷檢查時間的狀態來判斷是否進行讀寫操作,這樣帶來的開銷很大,因此就有了異步非阻塞的事件處理機制。這種機制讓你可以同時監控多個事件,調用他們是非阻塞的,但是可以設置超時時間,在超時時間之內,如果有事件准備好了,就返回。這種機制解決了上面阻塞調用與非阻塞調用的兩個問題

以epoll模型為例:當事件沒有准備號時,就放入epoll隊列里面,如果有事件准備好了,那么就去處理;當事件沒有准備好時,在epoll隊列里等待。這樣就實現了nginx處理大量並發的能力,這里並發請求是指未處理完的請求。線程只有一個,所以同時能處理請求的當然也只有一個,只是在請求之間進行不斷地切換而已,切換也是因為異步事件未准備好,而主動讓出的,可以理解為循環處理准備好的事件。所以通過異步非阻塞的事件處理機制,nginx實現由進程循環處理多個准備好的事件,從而實現高並發和輕量級。

⑤Master/Worker結構:一個master進程,生成一個或多個worker進程。worker的進程的主要時監控作用,worker進程是真正處理請求的進程,進程之間不會互相影響,一個進程退出后,其他進程還在工作,服務不會中斷,master進程則會很快重新啟動新的worker進程。

⑥內存消耗小:處理大並發的請求內存消耗非常小。在3萬並發連接下,開啟的10個nginx程序才消耗150M內存(15M * 10)

⑦內置健康檢查功能:如果nginx代理的后端的某台web服務器宕機了,不會影響前端訪問。

⑧節省寬帶:支持GZIP壓縮,可以添加瀏覽器本地緩存的HEADER頭。

⑨穩定性高:用於反向代理,宕機的概率微乎其微。

nginx反向代理服務器---拓補圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM