Nginx(一)基礎知識介紹

一:簡介

Nginx ("engine x") 是一個高性能的HTTP和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本0.1.0發布于2004年10月4日。其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、新浪、網易、騰訊、 淘寶等

  • 特性
    • 模塊化設計,較好的擴展性
    • 高可靠性
    • 低內存消耗
  • 基本功能:
    • 靜態資源的web 服務器
    • http 協議反向代理服務器
    • pop3/imap4 協議反向代理服務器
    • FastCGI(lnmp),uWSGI(python) 等協議
    • 模塊化(非DSO ),如zip ,SSL

二:Nginx的程序架構

  • nginx的程序架構:master/worker結構
    • 一個master進程:
      負責加載和分析配置文件、管理worker進程、平滑升級
    • 一個或多個worker進程
      處理并相應用戶請求
    • 緩存相關的進程:
      • cache loader:載入緩存對象
      • cache manager:管理緩存對象
  • ngnx架構

三:nginx模塊

  • nginx高度模塊化,但其模塊早期不支持DSO機制;近期版本支持動態裝載和卸載
  • 模塊分類:
    • 核心模塊:core module
    • 標準模塊:
      • HTTP 模塊:ngx_http_* 、HTTP Core modules、HTTP Optional modules
      • Mail 模塊:ngx_mail_*
      • Stream 模塊:ngx_stream_*
  • 第三方模塊

四: nginx的安裝

  • 編譯安裝

yum install pcre-devel openssl-devel zlib-devel

useradd -r nginx

下載源碼包并解壓
tar xf nginx-1.12.1.tar.gz
cd nginx-1.12.1/

./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-
path=/var/log/nginx/error.log --http-log-
path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio

make && make install
  • 編譯安裝nginx選項
    • --prefix=/etc/nginx
      安裝路徑
    • --sbin-path=/usr/sbin/nginx
      指明nginx程序文件安裝路徑
    • --conf-path=/etc/nginx/nginx.conf
      主配置文件安裝位置
    • --error-log-path=/var/log/nginx/error.log
      錯誤日志文件安裝位置
    • --http-log-path=/var/log/nginx/access.log
      訪問日志文件安裝位置
    • pid-path=/var/run/nginx.pid
      指明pid文件安裝位置
    • lock-path=/var/run/nginx.lock
      鎖文件安裝位置
    • --http-client-body-temp-path=/var/cache/nginx/client_temp
      客戶端body部分的臨時文件存放路徑,如果服務器允許客戶端使用put方法提交給大數據時,臨時存放的磁盤路徑
    • --http-proxy-temp-path=/var/cache/nginx/proxy_temp
      作為代理服務器,服務器響應報文的臨時文件存放路徑
    • --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
      作為fastcgi代理服務器,服務器響應報文的臨時文件存放路徑
    • --http-uuwsgi-temp-path=/var/cache/nginx/uwsgi_temp
      作為uwsgi代理服務器,服務器響應報文的臨時文件存放路徑
    • --http-scgi-temp-path=/var/cache/nginx/scgi_temp
      作為scgi反代服務器,服務器響應報文的臨時文件存放路徑
    • --user=nginx
      指明以哪個身份運行worker進程,主控master進程一般由root運行
    • --group=nginx
    • --with-http_ssl_module
      表示把指定模塊編譯出來

五: nginx目錄結構和命令

  • ls /usr/local/nginx/html
    html是測試頁,sbin是主程序
  • ls /usr/local/nginx/sbin/nginx
    nginx只有一個程序文件
  • ls /usr/local/nginx/html/50x.html
    index.html測試網頁
  • /usr/local/nginx/sbin/nginx -t
    測試nginx語法錯誤
  • /usr/local/nginx/sbin/nginx -h
    查看幫助選項
    • -c filename :指定配置文件(default:/etc/nginx/nginx.conf)
    • -s signal :發送信號給master進程,signal可為:stop,quit,reopen,reload
    • -g directives :在命令行中指明全局指令
  • /usr/local/nginx/sbin/nginx -s stop
    停止nginx
  • /usr/local/nginx/sbin/nginx
    啟動nginx

六: nginx配置

  • 配置文件的組成部分:
    • 主配置文件:nginx.conf
    • fastcgi、uwsgi、scgi等協議相關的配置文件
    • mime.type:支持的mime類型
  • 主配置文件(/etc/nginx/nginx.conf)的配置指令:
    • directive value [ value2 ... ]
    • 注意:
      • 指令必須以分號結尾
      • 支持使用配置變量
        • 內建命令:由Nginx模塊引入,可直接引用
        • 自定義變量:由用戶使用set命令定義
          set variable_name value;
        • 引用變量:$variable_name

七: nginx配置文件

  • 主配置文件結構(/etc/nginx/nginx.conf
    • main block:主配置段,對http , mail都有效
    • event {
      ······
      } :時間驅動相關的配置
    • http {
      ······
      } : http/https協議相關配置段
    • mail {
      ······
      } :mail協議配置段
    • stream {
      ······
      } :stream服務器相關配置段
  • http協議相關的配置結構(/etc/nginx/nginx.conf
http {
   ...
   ... 各server 的公共配置
    server { 每個server 用于定義一個虛擬主機
           ...
            }
    server {
        ...
        server_name 虛擬主機名
        root 主目錄
        alias 路徑別名
        location [OPERATOR] URL { 指定URL 的特性
        ...
        if CONDITION {
...
             }
         }
     }
}

八、主配置文件中的全局配置段

/etc/nginx/nginx.conf

正常運行必備的配置:
幫助文檔:http://nginx.org/en/docs/ngx_core_module.html

  • 1、user
Syntax:         user user [group];
Default:        user nobody nobody;
Context:        main

指定worker進程的運行身份,如組不確定,默認和用戶名同名

  • 2、pid /PATH/TO/PID_FILE
    指定存儲nginx主進程PID的文件路徑

  • 3、include file | mask
    指明包含進來的其他配置文件片段

  • 4、load_module file
    /usr/share/nginx/modules/*.conf
    指明要裝載的動態模塊路徑:/usr/lib64/nginx/modules

性能優化相關的配置

  • 1、work_processes number | auto
    worker進程的數量;通常應該為當前主機的CPU的物理核心數

  • 2、worker_cpu_affinity cpumask ···
    worker_cpu_affinity auto [cpumask] :提高緩存命中率
    CPU MASK:
    0000 0001:0號CPU
    0000 0010 : 1號CPU
    1000 0000 : 8號CPU

  • 3、worker_priority number
    指定worker進程的nice指,設定worker進程優先級:由高到低 :[ - 20 , 20 ]

  • 4、worker_rlimit_nofile number
    單個worker進程所能夠打開的文件數量上限,如65535

調試和定位問題:

  • 1、daemon on | off
    是否以守護進程方式運行nginx,默認是守護進程方式

  • 2、master_process on | off
    是否以master/worker模型運行nginx;默認為on,off將不啟動worker

  • 3、error_log file [level]
    錯誤日志文件及其級別;處于調試需要,可設定為debug;但debug僅在編譯時使用了“--with-debug”選項時才有效
    level:debug|info|notice|warn|error|crit|alter|emerg

事件驅動相關的配置
events {
······
}

  • 1、worker_connections number
    每個worker 進程所能夠打開的最大并發連接數數量,如10240
    總最大并發數:worker_processes * worker_connections

  • 2 、use method
    指明并發連接請求的處理方法, 默認自動選擇最優方法
    use epoll;

  • 3 、accept_mutex on | off 互斥
    處理新的連接請求的方法;on指由各個worker 輪流處理新請求,Off指每個新請求的到達都會通知( 喚醒) 所有的worker 進程,但只有一個進程可獲得連接,造成“驚群”,影響性能,默認on

http 協議的相關配置:

http {
    ... ...
    server {
            ...
            server_name
            root
            location [OPERATOR] /uri/ {
                ...
                }
            }
            server {
            ...
            }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,441評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,475評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,834評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,009評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,559評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,306評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,516評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,728評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,249評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,484評論 2 379

推薦閱讀更多精彩內容

  • Page 1:nginx 服務器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,561評論 1 41
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 32,744評論 24 1,002
  • 1.簡介: ? Nginx:engine X ,2002年,開源,商業版? http協議:web服務器(類似于ht...
    尛尛大尹閱讀 1,887評論 0 3
  • 上一篇《WEB請求處理一:瀏覽器請求發起處理》,我們講述了瀏覽器端請求發起過程,通過DNS域名解析服務器IP,并建...
    七寸知架構閱讀 81,125評論 21 356
  • 這場戲你看的滿意嗎, 我就是那滑稽的小丑啊, 都在嘲笑著我那, 浮夸的演技吧, 反正無人在意, 誰是那個小丑吧! ...
    落凌清絕閱讀 207評論 0 0