輕量級HTTP伺服器Nginx(入門篇)

2021-09-03 05:49:29 字數 2312 閱讀 8770

一、什麼是nginx

相信很多讀者都對apache非常熟悉,與apache類似,nginx是一款高效能的http和反向**伺服器軟體,也是乙個 imap/pop3/smtp **伺服器。nginx(發音是「engine x」)由俄羅斯的程式設計師igor sysoev所開發(igor將源**以類bsd許可證的形式發布),可以執行在unix,gnu/linux,bsd,mac os x, solaris, 以及 microsoft windows等作業系統中。隨著nginx在很多大型**的穩定執行,其穩定、高效的特性逐漸被越來越多的使用者認可。

二、為什麼要選擇nginx

1、nginx與apache的異同

nginx和apache一樣,都是乙個http伺服器軟體,功能實現上都採用模組化結構設計,都支援通用的語言介面,如php、perl、python等,同時還支援正、反向**,虛擬主機,url重寫,壓縮傳輸,ssl加密傳輸等。它們之間最大的差別是apache處理速度很慢,且占用很多記憶體資源,而nginx卻恰恰相反;在功能實現上,apache的所有模組都支援動、靜態編譯,而nginx模組都是靜態編譯的,同時,apache對fcgi支援不好,而nginx對fcgi的支援非常的好;最重要的是,在處理連線方式上,nginx支援epoll,而apache卻不支援;在大小上,nginx安裝包僅僅有幾百k,和nginx比起來apache絕對是龐然大物。在了解了nginx和apache之間的異同點後基本知道了nginx作為http伺服器的優勢所在。

2、 選擇nginx的優勢所在

通過上面的簡單介紹,nginx作為http伺服器的優勢是顯而易見的,它有很多其它web伺服器無法比擬的效能和優勢:

作為web伺服器,nginx處理靜態檔案、索引檔案以及自動索引效率非常高。

作為**伺服器,nginx可以實現無快取的反向**加速,提高**執行速度。

作為負載均衡伺服器,nginx既可以在內部直接支援rails和php,也可以支援http**伺服器,對外進行服務。同時支援簡單的容錯和利用演算法進行負載均衡。

在效能方面,nginx是專門為效能優化而開發的,在實現上非常注重效率。它採用核心poll模型,可以支援更多的併發連線,最大可以支援對50 000個併發連線數的響應,而且占用很低的記憶體資源。

在穩定性方面,nginx採取了分階段資源分配技術,使得對cpu與記憶體的佔用率非常低。nginx官方表示nginx保持10 000個沒有活動的連線,這些連線只佔2.5m記憶體,因此,類似dos這樣的***對nginx來說基本上是沒有任何作用的。

在高可用性方面,nginx支援熱部署,啟動速度特別迅速,因此可以在不間斷服務的情況下,對軟體版本或者配置進行公升級,即使執行數月也無需重新啟動,幾乎可以做到7×24小時的不間斷執行。

3、nginx的模組與工作原理

nginx由核心和模組組成,其中,核心的設計非常微小和簡潔,完成的工作也非常簡單,僅僅通過查詢配置檔案將客戶端請求對映到乙個location block(location是nginx配置中的乙個指令,用於url匹配),而在這個location中所配置的每個指令將會啟動不同的模組去完成相應的工作。

nginx的模組從結構上分為核心模組、基礎模組和第三方模組, http模組、event模組和mail模組等屬於核心模組,http access模組、http fastcgi模組、http proxy模組和http rewrite模組屬於基本模組,而http upstream request hash模組、notice模組和http access key模組屬於第三方模組,使用者根據自己的需要開發的模組都屬於第三方模組。正是有了這麼多模組的支撐,nginx的功能才會如此強大。

nginx的模組從功能上分為三類,分別是:

(1) handlers(處理器模組)。此類模組直接處理請求,並進行輸出內容和修改headers資訊等操作。handlers處理器模組一般只能有乙個。

(2) filters (過濾器模組)。此類模組主要對其他處理器模組輸出的內容進行修改操作,最後由nginx輸出。

(3) proxies (**類模組)。就是nginx的http upstream之類的模組,這些模組主要與後端一些服務比如fastcgi等操作互動,實現服務**和負載均衡等功能。

下圖展示了nginx的模組下一次常規的http請求和響應的過程。

在工作方式上,nginx分為單工作程序和多工作程序兩種模式。在單工作程序模式下,除主程序外,還有乙個工作程序,工作程序是單執行緒的;在多工作程序模式下,每個工作程序包含多個執行緒。nginx預設為單工作程序模式。

nginx的模組直接被編譯進nginx,因此屬於靜態編譯方式。啟動nginx後,nginx的模組被自動載入,不像在apache一樣,首先將模組編譯為乙個so檔案,然後在配置檔案中指定是否進行載入。在解析配置檔案時,nginx的每個模組都有可能去處理某個請求,但是同乙個處理請求只能由乙個模組來完成。

輕量級HTTP伺服器Nginx(安裝篇)

root localhost home tar zxvf pcre 8.02.tar.gz root localhost home cd pcre 8.02 root localhost pcre 8.02 configure root localhost pcre 8.02 make root l...

輕量級HTTP伺服器NginX的配置與除錯

nginx安裝完畢後,會產生相應的安裝目錄,根據前面的安裝路徑,nginx的配置檔案路徑為 opt nginx conf,其中nginx.conf為nginx的主配置檔案。這裡重點介紹下nginx.conf這個配置檔案。nginx配置檔案主要分成四部分 main 全域性設定 server 主機設定 ...

阿里雲輕量級伺服器

解決linux mysql命令 bash mysql command not found 的方法 root db 02 mysql u root bash mysql command not found 原因 這是由於系統缺省會查詢 usr bin下的命令,如果這個命令不在這個目錄下,當然會找不到命...