Nginx概述

Nginx概述

一. Nginx簡介

Nginx(發音爲"engine X")是俄羅斯人編寫的十分輕量級的HTTP 服務器,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。

Nginx 因爲它的穩定性、豐富的模塊庫、靈活的配置和低系統資源的消耗而聞名。業界一致認爲它是Apache2.2+mod_proxy_balancer 的輕量級代替者,不僅是因爲響應靜態頁面的速度非常快,而且它的模塊數量達到Apache 的近2/3。對proxy 和rewrite 模塊的支持很徹底,還支持mod_fcgi、ssl、vhosts ,適合用來做mongrel clusters 的前端HTTP 響應。

目前Nginx在國內很多大型企業都有應用,且普及率呈逐年上升趨勢。Nginx的優勢如下:

  1. 它可以支持5W高併發連接;
  2. 內存消耗少;
  3. 成本低。

二. 應用場景

  1. 網關

    面向客戶訪問的總入口

  2. 虛擬主機

    一臺Nginx同時爲多個{域名:端口}提供服務

  3. 路由和反向代理

    提供反向代理,整合一系列服務

  4. 靜態服務器

    提供對前端頁面、樣式等靜態資源的訪問

  5. 集羣負載均衡

    使用upstream,負載多個Web Server(如Tomcat)

三. 架構設計

  1. 模塊化設計

    高度模塊化的設計是Nginx 的架構基礎。Nginx 服務器被分解爲多個模塊,每個模塊就是一個功能模塊,只負責自身的功能,模塊之間嚴格遵循“高內聚,低耦合”的原則。

在這裏插入圖片描述

  1. 核心模塊

    核心模塊是Nginx 服務器正常運行必不可少的模塊,提供錯誤日誌記錄、配置文件解析、事件驅動機制、進程管理等核心功能。

  2. 標準HTTP模塊

    標準HTTP 模塊提供HTTP 協議解析相關的功能,如:端口配置、網頁編碼設置、HTTP 響應頭設置等。

  3. 可選HTTP模塊

    可選HTTP 模塊主要用於擴展標準的HTTP 功能,讓Nginx 能處理一些特殊的服務,如:Flash 多媒體傳輸、解析GeoIP 請求、SSL 支持等。

  4. 郵件服務模塊

    郵件服務模塊主要用於支持Nginx 的郵件服務,包括對POP3 協議、IMAP 協議和SMTP 協議的支持。

  5. 第三方模塊

    第三方模塊是爲了擴展Nginx 服務器應用,完成開發者自定義功能,如:Json支持、Lua 支持等。

  6. Master-Worker多進程模型

在這裏插入圖片描述

Nginx服務器每當收到一個客戶端請求時,就由服務器主進程(Master)生成一個子進程(Worker)出來和客戶端建立連接進行交互,直到連接斷開,該子進程才結束。

多進程模式的優勢

  1. 各個進程之間相互獨立,不需要加鎖,減少了資源競爭對性能造成影響;
  2. 進程互相之間不會影響,如果一個進程發生異常退出時,其它進程仍然可以正常工作,Master進程則很快啓動新的Worker進程,確保服務不中斷,將風險降到最低;
  3. 降低編程的複雜度,降低開發成本。

多進程模式的缺點

  1. 操作系統生成一個子進程需要進行內存複製等操作,在資源和時間上會產生一定的開銷;

  2. 當有大量請求時,創建大量的進程,會導致系統性能下降。

  3. epoll模式

    相較於傳統的select和poll模式,epoll的優勢如下:

    1. 支持一個進程打開大數目的socket描述符(FD);
    2. IO效率不隨FD數目增加而線性下降;
    3. 使用mmap加速內核與用戶空間的消息傳遞。
  4. 正向代理 VS 反向代理

    1. 代理(正向代理):指一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端。

      正向代理是順着請求的方向進行的代理,主要是爲客戶端服務的。

    2. 反向代理:實際運行方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個服務器。

      反向代理是爲內部服務器服務的。

四. 安裝

  1. 下載源碼包,並解壓

    wget  http://nginx.org/download/nginx-1.15.8.tar.gz
    tar -zxvf nginx-1.15.8.tar.gz
    cd nginx-1.15.8
    
  2. 配置

    ./configure   --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    
  3. 編譯並安裝

    make && make install 
    

五. 常用命令

  1. 啓動

    ./nginx (-c nginx.conf的文件) #如果不指定,默認爲NGINX_HOME/conf/nginx.conf
    
  2. 停止

    ./nginx -s stop
    
  3. 退出

    ./nginx -s quit
    
  4. 重新加載配置

    ./nginx -s reload
    
  5. 檢查配置

    ./nginx -t
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章