Nginx 介紹及日常管理的詳解
Nginx(發音同 engine x)是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好.中國大陸使用nginx網站用戶有:新浪、網易、 騰訊等。本文簡要描述了Nginx的基本特性及其配置文件的簡單描述。
一、Nginx的工作進程
1、一個主進程: 主進程的主要目的是讀取和評估配置,啟動、終止及維護工作進程以及創建、綁定及關閉套接字。 2、多個工作進程: 工作進程處理web請求。nginx的采用了基于事件的模型和操作系統相關的機制,有效地分配工作進程之間的請求。 負責解析http協議;提供反向代理及過濾功能;nginx任何能完成的其它任務; 工作進程的數量被定義在配置文件中,可以使用配置文件定義固定的數量,或根據可用的CPU內核數實現自動調整其數量。3、緩存加載器(cache loader): 檢查緩存存儲中的緩存對象; 使用緩存元數據建立內存數據庫; 接收、傳入并處理來自客戶端的連接;4、緩存管理器(cache manager): 緩存的失效及過期檢驗;5、基于配置文件定義Nginx的工作方式 nginx的工作方式及其模塊的工作是在配置文件中確定的。 缺省情況下,其配置文件為nginx.conf,通常位于/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx目錄下。
二、Nginx特性
1、Nginx的模塊化特性 Nginx服務器與Apache httpd類似,采用了基于模塊化的構建方式。 在安裝部署Nginx服務器時,一定要遵循:最小化模塊安裝,以節省無用模塊對Nginx的性能影響及占用系統資源。 a、從功能上劃分 Nginx核心模塊:包括Nginx的內核模塊和事件驅動模塊 http服務器模塊:這類模塊包括三類模塊,即HTTP的內核模塊和標準模塊以及可選的HTTP模塊 b、從發布模塊的方式來劃分 官方模塊 第三方模塊 c、從模塊的可選項來劃分 必選模塊(Main和Events) 可選模塊2、Nginx功能特性 模塊化設計、較好擴展性 高可靠性 master-->worker 低內存消耗 10000個keep-alive連接在Nginx僅消耗2.5MB 支持熱部署 不停機而更新配置文件、更換日志文件、更新服務器程序版本 基本功能: 靜態資源的web服務器,能緩存打開的文件描述符; http, smtp, pop3協議的反向代理服務器,緩存、負載均衡; 支持FastCGI (fpm); 模塊化,非DSO機制,過濾器zip,SSI及圖像大小調整; 支持SSL; 非阻塞、事件驅動、一個master生成一個或多個worker, 每個worker響應n個請求; 擴展功能: 基于名稱和IP的虛擬主機; 支持keepalive 支持平滑升級 定制訪問日志 ,支持使用日志緩沖區提高日志存儲性能 支持url rewrite 支持路徑別名 支持基于IP及用戶的訪問控制 支持速率限制,支持并發數限制 Nginx的基本架構: 一個master進程,生成一個或多個worker 事件驅動: 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的啟動、停止、配置文件重新裝載
1、啟動 直接使用命令啟動,示例,-c后面跟上配置文件路徑及名字,如果忽略-c,則使用缺省的配置文件 # /usr/sbin/nginx -c /etc/nginx/nginx.conf 使用服務方式啟動,示例如下 # service nginx start2、啟動后的常用管理語法 nginx -s signal 其中signal可以為下列值 stop ― fast shutdown quit ― graceful shutdown reload ― reloading the configuration file reopen ― reopening the log files3、nginx的停止 stop ― 快速停止,粗暴模式,不再接受新請求,已經處理的請求被強制關閉,示例如下 # /usr/sbin/nginx -s stop quit ― 優雅停止,不再接受新請求,等待當前的工作進程完成當前的服務器請求,并停止nginx # /usr/sbin/nginx -s quit 通過服務方式關閉nginx # service nginx stop4、配置文件重新裝載 reload ― 重新載入配置文件 nginx配置文件的任意變更,不會被立即生效,需要使用重載命令或重啟nginx 一旦主進程接收到重新加載配置的信號,它檢查新的配置文件的語法正確性,并嘗試應用新的配置。 否則,主進程回滾所做的更改,并繼續使用舊的配置文件工作。 舊的工作進程,接收命令關閉, 停止接受新的連接,并繼續服務于當前的請求,直至當前請求服務完畢后,舊的工作進程退出 進程信號可以被發送到nginx,通過Linux/Unix的 kill工具來殺死進程。 在這種情況下的帶有進程ID的信號被直接發送到一個進程。 缺省情況下,nginx的主進程PID被寫入到位于/usr/local/logs或者/var/run目錄的nginx.pid文件。 例如,如果主進程ID是1628,發送nginx正常關機的退出信號,則執行: kill -s QUIT 1628 通過服務方式重載配置文件 # service nginx reload
新聞熱點
疑難解答