Nginx(一)基礎(chǔ)知識(shí)介紹

一:簡(jiǎn)介

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

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

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

二:Nginx的程序架構(gòu)

  • nginx的程序架構(gòu):master/worker結(jié)構(gòu)
    • 一個(gè)master進(jìn)程:
      負(fù)責(zé)加載和分析配置文件、管理worker進(jìn)程、平滑升級(jí)
    • 一個(gè)或多個(gè)worker進(jìn)程
      處理并相應(yīng)用戶請(qǐng)求
    • 緩存相關(guān)的進(jìn)程:
      • cache loader:載入緩存對(duì)象
      • cache manager:管理緩存對(duì)象
  • ngnx架構(gòu)

三:nginx模塊

  • nginx高度模塊化,但其模塊早期不支持DSO機(jī)制;近期版本支持動(dòng)態(tài)裝載和卸載
  • 模塊分類:
    • 核心模塊:core module
    • 標(biāo)準(zhǔn)模塊:
      • 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選項(xiàng)
    • --prefix=/etc/nginx
      安裝路徑
    • --sbin-path=/usr/sbin/nginx
      指明nginx程序文件安裝路徑
    • --conf-path=/etc/nginx/nginx.conf
      主配置文件安裝位置
    • --error-log-path=/var/log/nginx/error.log
      錯(cuò)誤日志文件安裝位置
    • --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部分的臨時(shí)文件存放路徑,如果服務(wù)器允許客戶端使用put方法提交給大數(shù)據(jù)時(shí),臨時(shí)存放的磁盤路徑
    • --http-proxy-temp-path=/var/cache/nginx/proxy_temp
      作為代理服務(wù)器,服務(wù)器響應(yīng)報(bào)文的臨時(shí)文件存放路徑
    • --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
      作為fastcgi代理服務(wù)器,服務(wù)器響應(yīng)報(bào)文的臨時(shí)文件存放路徑
    • --http-uuwsgi-temp-path=/var/cache/nginx/uwsgi_temp
      作為uwsgi代理服務(wù)器,服務(wù)器響應(yīng)報(bào)文的臨時(shí)文件存放路徑
    • --http-scgi-temp-path=/var/cache/nginx/scgi_temp
      作為scgi反代服務(wù)器,服務(wù)器響應(yīng)報(bào)文的臨時(shí)文件存放路徑
    • --user=nginx
      指明以哪個(gè)身份運(yùn)行worker進(jìn)程,主控master進(jìn)程一般由root運(yùn)行
    • --group=nginx
    • --with-http_ssl_module
      表示把指定模塊編譯出來(lái)

五: nginx目錄結(jié)構(gòu)和命令

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

六: nginx配置

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

七: nginx配置文件

  • 主配置文件結(jié)構(gòu)(/etc/nginx/nginx.conf
    • main block:主配置段,對(duì)http , mail都有效
    • event {
      ······
      } :時(shí)間驅(qū)動(dòng)相關(guān)的配置
    • http {
      ······
      } : http/https協(xié)議相關(guān)配置段
    • mail {
      ······
      } :mail協(xié)議配置段
    • stream {
      ······
      } :stream服務(wù)器相關(guān)配置段
  • http協(xié)議相關(guān)的配置結(jié)構(gòu)(/etc/nginx/nginx.conf
http {
   ...
   ... 各server 的公共配置
    server { 每個(gè)server 用于定義一個(gè)虛擬主機(jī)
           ...
            }
    server {
        ...
        server_name 虛擬主機(jī)名
        root 主目錄
        alias 路徑別名
        location [OPERATOR] URL { 指定URL 的特性
        ...
        if CONDITION {
...
             }
         }
     }
}

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

/etc/nginx/nginx.conf

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

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

指定worker進(jìn)程的運(yùn)行身份,如組不確定,默認(rèn)和用戶名同名

  • 2、pid /PATH/TO/PID_FILE
    指定存儲(chǔ)nginx主進(jìn)程PID的文件路徑

  • 3、include file | mask
    指明包含進(jìn)來(lái)的其他配置文件片段

  • 4、load_module file
    /usr/share/nginx/modules/*.conf
    指明要裝載的動(dòng)態(tài)模塊路徑:/usr/lib64/nginx/modules

性能優(yōu)化相關(guān)的配置

  • 1、work_processes number | auto
    worker進(jìn)程的數(shù)量;通常應(yīng)該為當(dāng)前主機(jī)的CPU的物理核心數(shù)

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

  • 3、worker_priority number
    指定worker進(jìn)程的nice指,設(shè)定worker進(jìn)程優(yōu)先級(jí):由高到低 :[ - 20 , 20 ]

  • 4、worker_rlimit_nofile number
    單個(gè)worker進(jìn)程所能夠打開的文件數(shù)量上限,如65535

調(diào)試和定位問題:

  • 1、daemon on | off
    是否以守護(hù)進(jìn)程方式運(yùn)行nginx,默認(rèn)是守護(hù)進(jìn)程方式

  • 2、master_process on | off
    是否以master/worker模型運(yùn)行nginx;默認(rèn)為on,off將不啟動(dòng)worker

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

事件驅(qū)動(dòng)相關(guān)的配置
events {
······
}

  • 1、worker_connections number
    每個(gè)worker 進(jìn)程所能夠打開的最大并發(fā)連接數(shù)數(shù)量,如10240
    總最大并發(fā)數(shù):worker_processes * worker_connections

  • 2 、use method
    指明并發(fā)連接請(qǐng)求的處理方法, 默認(rèn)自動(dòng)選擇最優(yōu)方法
    use epoll;

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

http 協(xié)議的相關(guān)配置:

http {
    ... ...
    server {
            ...
            server_name
            root
            location [OPERATOR] /uri/ {
                ...
                }
            }
            server {
            ...
            }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容