應用場景
- 靜態資源(js、css、圖片 )
- 反向代理
- 緩存加速(動態資源),比如社區活躍度排名
- 負載均衡(動態擴容、容災)
- API服務
一個請求先經過nginx,再到應用服務器,訪問數據庫/redis提供基本數據,應用服務要求開發效率高,運行效率就很低,qps、tps、併發受限,所以需要把很多的應用服務組成一個集羣,向用戶提供高可用性,需要nginx具有反向代理功能
nginx爲什麼會出現?
- 互聯網數據量快速增常
- (摩爾定律)性能提升
- 地效apache
cpu開始向多核cpu發展,當你從8核的cpu升到16核cpu時,你的性能並不能有一倍提升,操作系統和軟件(apache)沒有做好“多核架構準備”,apache一個連接對應一個進程,一個進程同一時間只能服務於一個連接,當需要面臨幾百萬的連接時,apache沒辦法開幾百個連接,進程間切換的成本太高,nginx正是爲了這種場景而生
優點
- 高併發,高性能(可以輕鬆達到數千萬的併發連接)
- 擴展性好(模塊化設計,豐富生態圈提供了豐富的模塊)
- 高可靠性(可以持續不間斷的運行數年)
- 熱部署(可以在不停止nginx的情況下升級)
- BSD許可證(開源免費)
組成
- 二進制可執行文件(由各模塊源碼編譯出的一個文件)
- 配置文件
- 日誌(access.log\error.log)