您好,登錄后才能下訂單哦!
這篇文章主要介紹了Nginx日常管理的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Nginx(發(fā)音同 engine x)是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好.中國大陸使用nginx網(wǎng)站用戶有:新浪、網(wǎng)易、 騰訊等。本文簡要描述了Nginx的基本特性及其配置文件的簡單描述。
一、Nginx的工作進(jìn)程
1、一個(gè)主進(jìn)程: 主進(jìn)程的主要目的是讀取和評(píng)估配置,啟動(dòng)、終止及維護(hù)工作進(jìn)程以及創(chuàng)建、綁定及關(guān)閉套接字。 2、多個(gè)工作進(jìn)程: 工作進(jìn)程處理web請(qǐng)求。nginx的采用了基于事件的模型和操作系統(tǒng)相關(guān)的機(jī)制,有效地分配工作進(jìn)程之間的請(qǐng)求。 負(fù)責(zé)解析http協(xié)議;提供反向代理及過濾功能;nginx任何能完成的其它任務(wù); 工作進(jìn)程的數(shù)量被定義在配置文件中,可以使用配置文件定義固定的數(shù)量,或根據(jù)可用的CPU內(nèi)核數(shù)實(shí)現(xiàn)自動(dòng)調(diào)整其數(shù)量。 3、緩存加載器(cache loader): 檢查緩存存儲(chǔ)中的緩存對(duì)象; 使用緩存元數(shù)據(jù)建立內(nèi)存數(shù)據(jù)庫; 接收、傳入并處理來自客戶端的連接; 4、緩存管理器(cache manager): 緩存的失效及過期檢驗(yàn); 5、基于配置文件定義Nginx的工作方式 nginx的工作方式及其模塊的工作是在配置文件中確定的。 缺省情況下,其配置文件為nginx.conf,通常位于/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx目錄下。
二、Nginx特性
1、Nginx的模塊化特性 Nginx服務(wù)器與Apache httpd類似,采用了基于模塊化的構(gòu)建方式。 在安裝部署Nginx服務(wù)器時(shí),一定要遵循:最小化模塊安裝,以節(jié)省無用模塊對(duì)Nginx的性能影響及占用系統(tǒng)資源。 a、從功能上劃分 Nginx核心模塊:包括Nginx的內(nèi)核模塊和事件驅(qū)動(dòng)模塊 http服務(wù)器模塊:這類模塊包括三類模塊,即HTTP的內(nèi)核模塊和標(biāo)準(zhǔn)模塊以及可選的HTTP模塊 b、從發(fā)布模塊的方式來劃分 官方模塊 第三方模塊 c、從模塊的可選項(xiàng)來劃分 必選模塊(Main和Events) 可選模塊 2、Nginx功能特性 模塊化設(shè)計(jì)、較好擴(kuò)展性 高可靠性 master-->worker 低內(nèi)存消耗 10000個(gè)keep-alive連接在Nginx僅消耗2.5MB 支持熱部署 不停機(jī)而更新配置文件、更換日志文件、更新服務(wù)器程序版本 基本功能: 靜態(tài)資源的web服務(wù)器,能緩存打開的文件描述符; http, smtp, pop3協(xié)議的反向代理服務(wù)器,緩存、負(fù)載均衡; 支持FastCGI (fpm); 模塊化,非DSO機(jī)制,過濾器zip,SSI及圖像大小調(diào)整; 支持SSL; 非阻塞、事件驅(qū)動(dòng)、一個(gè)master生成一個(gè)或多個(gè)worker, 每個(gè)worker響應(yīng)n個(gè)請(qǐng)求; 擴(kuò)展功能: 基于名稱和IP的虛擬主機(jī); 支持keepalive 支持平滑升級(jí) 定制訪問日志 ,支持使用日志緩沖區(qū)提高日志存儲(chǔ)性能 支持url rewrite 支持路徑別名 支持基于IP及用戶的訪問控制 支持速率限制,支持并發(fā)數(shù)限制 Nginx的基本架構(gòu): 一個(gè)master進(jìn)程,生成一個(gè)或多個(gè)worker 事件驅(qū)動(dòng): epoll, kqueue, /dev/poll (event ports) 消息通知:select, poll, rt signals 支持sendfile, sendfile64 支持AIO 支持mmap 模塊類型: 核心模塊 Standard HTTP modules Optional HTTP modules Mail modules 3rd party modules
三、Nginx的啟動(dòng)、停止、配置文件重新裝載
1、啟動(dòng) 直接使用命令啟動(dòng),示例,-c后面跟上配置文件路徑及名字,如果忽略-c,則使用缺省的配置文件 # /usr/sbin/nginx -c /etc/nginx/nginx.conf 使用服務(wù)方式啟動(dòng),示例如下 # service nginx start 2、啟動(dòng)后的常用管理語法 nginx -s signal 其中signal可以為下列值 stop — fast shutdown quit — graceful shutdown reload — reloading the configuration file reopen — reopening the log files 3、nginx的停止 stop — 快速停止,粗暴模式,不再接受新請(qǐng)求,已經(jīng)處理的請(qǐng)求被強(qiáng)制關(guān)閉,示例如下 # /usr/sbin/nginx -s stop quit — 優(yōu)雅停止,不再接受新請(qǐng)求,等待當(dāng)前的工作進(jìn)程完成當(dāng)前的服務(wù)器請(qǐng)求,并停止nginx # /usr/sbin/nginx -s quit 通過服務(wù)方式關(guān)閉nginx # service nginx stop 4、配置文件重新裝載 reload — 重新載入配置文件 nginx配置文件的任意變更,不會(huì)被立即生效,需要使用重載命令或重啟nginx 一旦主進(jìn)程接收到重新加載配置的信號(hào),它檢查新的配置文件的語法正確性,并嘗試應(yīng)用新的配置。 否則,主進(jìn)程回滾所做的更改,并繼續(xù)使用舊的配置文件工作。 舊的工作進(jìn)程,接收命令關(guān)閉, 停止接受新的連接,并繼續(xù)服務(wù)于當(dāng)前的請(qǐng)求,直至當(dāng)前請(qǐng)求服務(wù)完畢后,舊的工作進(jìn)程退出 進(jìn)程信號(hào)可以被發(fā)送到nginx,通過Linux/Unix的 kill工具來殺死進(jìn)程。 在這種情況下的帶有進(jìn)程ID的信號(hào)被直接發(fā)送到一個(gè)進(jìn)程。 缺省情況下,nginx的主進(jìn)程PID被寫入到位于/usr/local/logs或者/var/run目錄的nginx.pid文件。 例如,如果主進(jìn)程ID是1628,發(fā)送nginx正常關(guān)機(jī)的退出信號(hào),則執(zhí)行: kill -s QUIT 1628 通過服務(wù)方式重載配置文件 # service nginx reload
四、Nginx配置文件結(jié)構(gòu)
1、配置說明 a、nginx配置文件由不同模塊組成,通過模塊化的方式實(shí)現(xiàn)不同的功能。 b、配置指令分為簡單指令和塊指令。一個(gè)簡單的指令,包括名稱,用空格分隔參數(shù),并用分號(hào)(;)結(jié)束。 c、一個(gè)塊指令由一個(gè)或多個(gè)簡單具有相同的結(jié)構(gòu)簡單指令組合而成,使用一組用{}括號(hào)括起來表示塊結(jié)束。 d、上下文:一個(gè)塊的指令包含有大括號(hào)其他指令,它被稱為上下文(例如:事件,HTTP,服務(wù)器,和位置)。 放置在配置文件中的任何上下文以外的指令都被認(rèn)為是在主上下文。 e、檢查配置文件語法: nginx -t f、指定nginx要加載的配置文件:nginx -c 2、配置文件構(gòu)成 Nginx配置文件結(jié)構(gòu)主要由以下幾部分構(gòu)成。 ...... events #Events用于配置IO模型,如epoll、kqueue、select或poll等,它們是必備模塊。 { ...... } http #http上下文專用于配置用于http的各模塊 { #包括客戶端類指令,文件IO類指令,hash類指令,套接字類指令等 ...... server #用于定義虛擬服務(wù)器相關(guān)的屬性,常見的指令有backlog、rcvbuf、bind及sndbuf等 { ...... } server { ...... } ...... } 3、基本的nginx.conf配置描述 # more /etc/nginx/nginx.conf #user nobody; #指定運(yùn)行worker進(jìn)程的用戶和組 worker_processes 1; #worker線程的個(gè)數(shù);通常應(yīng)該為物理CPU核心個(gè)數(shù)減1; #error_log logs/error.log; #配置錯(cuò)誤日志文件位置及日志記錄級(jí)別 #error_log logs/error.log notice;#可用于main、http、server及l(fā)ocation上下文中 #error_log logs/error.log info; #語法格式為error_log file |stderr [debug|info|notice|warn|error|crit|alert|emerg] #pid logs/nginx.pid; #指定pid存放路徑 events { worker_connections 1024; 每個(gè)worker進(jìn)程所能夠響應(yīng)的最大并發(fā)請(qǐng)求數(shù); } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #此部分用于設(shè)置訪問日志的格式及位置 #access_log logs/access.log main; sendfile on; #文件發(fā)送 #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #保持連接的超時(shí)時(shí)長,默認(rèn)為65s #gzip on; #是否開啟gzip壓縮 server { listen 80; #定義監(jiān)聽的端口 Author:Leshami server_name localhost; #定義監(jiān)聽的主機(jī) Blog :http://blog.csdn.net/leshami #charset koi8-r; #定義字符集 #access_log logs/host.access.log main; #訪問日志文件存放路徑 location / { #location通常用于server上下文中,用于設(shè)定某URI的訪問屬性。location可以嵌套。 root html; #默認(rèn)首頁文件位置,此處當(dāng)前為相對(duì)路徑,/etc/nginx/html index index.html index.htm; #首頁文件順序,如果找不到index.html,則找index.htm } #以下部分根據(jù)http狀態(tài)碼重定向錯(cuò)誤頁面 #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
五、獲取Nginx幫助
[root@wms ~]# nginx -h nginx version: nginx/1.8.0 Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /etc/nginx/) -c filename : set configuration file (default: /etc/nginx/nginx.conf) -g directives : set global directives out of configuration file
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Nginx日常管理的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。