nginx是乙個高效能,高併發的web伺服器、http反向**伺服器。它的作用是可以部署靜態web資源, 給應用伺服器做反向**, 並能實現負載均衡。
說到這裡, nginx的核心是反向**?那什麼是反向**?有反向是不是必定有正向**?
客戶端通過**伺服器**訪問應用服務, 這叫正向**,也就是**伺服器**的物件是客戶端。比如國內的電腦因為某些原因不能訪問到goggle,那麼這時候就可以通過vpn連到一台可以訪問到goggle的**伺服器, 通過這台**伺服器**訪問goggle, **伺服器訪問goggle成功後轉回被**客戶端。
伺服器通過**伺服器**被客戶端訪問, 這叫反向**,也就是反向**伺服器**的是服務端。
因為一些原因,應用伺服器往往不想被外界直接訪問, 這時候就可以通過反向**伺服器做**,客戶端的請求先到反向**伺服器, **伺服器再**到應用伺服器。這樣的好處就是對外不直接暴露了真實的應用服務,還可以通過反向**對請求進行一系列處理後再轉到具體應用服務, 比如做負載均衡。
nginx的工作模式是master + works模式, 分為乙個master程序和多個works程序共同工作。master程序負責讀取配置檔案, 以及管理works程序,works程序負責處理請求與連線, 其中works可以有多個同時工作,數量可以在nginx配置檔案配置。一般設為等於cpu的核心數。
正是這種master + works模式讓nginx可以實現熱部署, 也就是可以實現修改nginx配置後無需重啟, 只需要執行nginx -s reload即可完成配置更新, 客戶端零感知。它的原理是master在監聽著配置檔案更新的指令,接收到配置檔案更新的指令,就會以新的配置建立新的works,然後等待舊的works把正在處理的請求和鏈結處理完成之後再kill掉, 最後換上新的works繼續工作。
nginx還基於linux的eopll模組實現, 也就是基於事件驅動模型。works在接收到請求時, 會先把請求加入到事件佇列, 而不是馬上處理。然後會有另外的執行緒在遍歷事件佇列,取出請求進行處理。從而不會產生阻塞現象,支援高併發、高效能處理請求。
通過server、location模組即可根據網域名稱,埠。ip配置虛擬主機
通過location的passproxy即可配置反向**
通過upstream模組即可配置負載均衡
詳細可以看我另外一篇文章:
nginx可以用於做負載均衡, 所有流量都會先通過nginx在**到後端伺服器。這樣一來, 如果nginx只有乙個例項的話,那麼也會造成單點故障。解決方案就是要做雙機熱備, 可以通過keepalived + nginx 或 lvs + keepalived + nginx來實現高可用web架構。其中比較關鍵的是keepalived ,它的作用是對nginx的執行狀態進行健康檢查,一旦出現「主」節點掛了, 能自動切換至「從」節點。
nginx快速入門
高效能http和反向 伺服器,專為效能優化開發,支援高併發 反向 負載均衡 動靜分離使用nginx命令,需要進入 usr local nginx sbin 檢視版本號 nginx v 啟動nginx nginx 關閉nginx nginx s stop 查詢程序 ps ef grep nginx 位...
Nginx快速入門
一句話總結 nginx快速入門 在乙個新安裝的linux系統上安裝並使用nginx。192.168.0.1 801 後台管理服務admin.myhome.com 192.168.0.1 18001 服務img.myhome.com 192.168.0.1 18002 音訊服務music.myhome...
nginx學習二 快速入門
開源 高效能 支援海量併發 可靠 服務穩定 輕量 占用資源少 http web 服務 服務 負載均衡 常見的 http web 服務 由apache 會 iis 微軟伺服器版 gws google開發 openrestry 基於 nginx lua tengline 基於 nginx 開發 在 ng...