Nginx 解決了服務(wù)器的C10K(就是在一秒之內(nèi)連接客戶端的數(shù)目為10k即1萬)問題。 Nginx的設(shè)計不像傳統(tǒng)的服務(wù)器那樣使用線程處理請求,而是一個更加高級的機(jī)制—事件驅(qū)動機(jī)制,是一種異步事件驅(qū)動結(jié)構(gòu)。
雖然目前Nginx的份額在市場上只占很少部分,但是其高性能和低消耗內(nèi)存的結(jié)構(gòu),使得其越來越普遍,典型的一個應(yīng)用就是我們可以使用Nginx作為反向代理進(jìn)行網(wǎng)站的負(fù)載均衡器。例如:Wordpress、GitHub等知名的網(wǎng)站都使用到了Nginx。
Nginx的特點
Ø 跨平臺:可以在大多數(shù)Unix like 系統(tǒng)編譯運(yùn)行。而且也有Windows的移植版本。
Ø 配置異常簡單:非常的簡單,易上手。
Ø 非阻塞、高并發(fā)連接:數(shù)據(jù)復(fù)制時,磁盤I/O的第一階段是非阻塞的。官方測試能支持5萬并發(fā)連接,實際生產(chǎn)中能跑2~3萬并發(fā)連接數(shù)(得益于Nginx采用了最新的epoll事件處理模型(消息隊列)。
Ø Nginx代理和后端Web服務(wù)器間無需長連接;
Ø Nginx接收用戶請求是異步的,即先將用戶請求全部接收下來,再一次性發(fā)送到后端Web服務(wù)器,極大減輕后端Web服務(wù)器的壓力。
Ø 發(fā)送響應(yīng)報文時,是邊接收來自后端Web服務(wù)器的數(shù)據(jù),邊發(fā)送給客戶端。
Ø 網(wǎng)絡(luò)依賴性低,理論上只要能夠ping通就可以實施負(fù)載均衡,而且可以有效區(qū)分內(nèi)網(wǎng)、外網(wǎng)流量。
Ø 支持內(nèi)置服務(wù)器檢測。Nginx能夠根據(jù)應(yīng)用服務(wù)器處理頁面返回的狀態(tài)碼、超時信息等檢測服務(wù)器是否出現(xiàn)故障,并及時返回錯誤的請求重新提交到其它節(jié)點上。
Ø 采用Master/worker多進(jìn)程工作模式
Ø 此外還有內(nèi)存消耗小、成本低廉(比F5硬件負(fù)載均衡器廉價太多)、節(jié)省帶寬、穩(wěn)定性高等特點。
Nginx的基本功能
Nginx的功能包括基本HTTP功能和擴(kuò)展功能。和Apache服務(wù)器一樣,Nginx服務(wù)器為了提供更多的功能并且能夠有效地擴(kuò)展這些功能。每一個模塊都提供了一個功能,通過編譯這些功能模塊來實現(xiàn)功能的擴(kuò)展。
1、基本HTTP功能
a)提供靜態(tài)文件和index文件,處理靜態(tài)文件,索引文件以及自動索引,打開文件描述符緩存;
b)使用緩存加速反向代理,反向代理加速(無緩存),簡單的負(fù)載均衡和容錯;
c)使用緩存機(jī)制加速遠(yuǎn)程FastCGI,簡單的負(fù)載均衡和容錯;
d)模塊化的結(jié)構(gòu)。過濾器包括gzipping,byte ranges,chunked responses,以及 SSI-filter。在SSI過濾器中,到同一個 proxy 或者 FastCGI 的多個子請求并發(fā)處理;
e)支持SSL 和 TLS SNI 支持;
f)IMAP/POP3代理功能;
g)使用外部 HTTP 認(rèn)證服務(wù)器重定向用戶到 IMAP/POP3 后端;
h)使用外部 HTTP 認(rèn)證服務(wù)器認(rèn)證用戶后連接重定向到內(nèi)部的 SMTP 后端;
2、其他HTTP功能
a)基于名稱和基于IP的虛擬服務(wù)器;
b)支持Keep-alive和管道連接;
c)靈活的配置和重新配置、在線升級的時候不用中斷客戶訪問的處理;
d)訪問日志的格式,緩存日志寫入和快速日志輪循;
e)3xx-5xx錯誤代碼重定向;
f)速度限制
Nginx的基本模塊
Nginx的核心模塊包括內(nèi)核模塊和事件驅(qū)動模塊,即:CoreModule和EventsModule;另外還有第三方模塊 HTTP內(nèi)核模塊,HttpCoreModule,它是Nginx服務(wù)器的核心模塊。
CoreModule和EventsModule模塊的配置相對于HttpCoreModule會少一些,但是它們的配置將會影響系統(tǒng)的性能,而非功能上的差異。
1、CoreModule用于控制Nginx服務(wù)器的基本功能;
2、EventsModule用于控制Nginx如何處理連接。該模塊的指令的一些參數(shù)會對應(yīng)用系統(tǒng)的性能產(chǎn)生重要的影響;
3、HttpCoreModule提供HTTP訪問Nginx服務(wù)器,該模塊是不能缺少的。
Nginx配置安裝的環(huán)境
1.yum -y install gcc* epel-release curl curl-devel mcrypt openssl openssl-devel gd gd-devel freetype freetype-devel zlib zlib-devel zip libmcrypt-devel libmcrypt pcre-devel libevent-devel ncurses-devel libxml2* mcrypt* libmcrypt* cmake gcc* lrzsz ntp telnet
2.創(chuàng)建用戶
useradd -s /sbin/nologin web
3.創(chuàng)建nginx的安裝目錄(此步驟可以省略)
mkdir -p /usr/local/nginx
chown -r web:web /usr/local/nginx
4.在華軍軟件園下載安裝的軟件安裝包(www.gf-sling.com/)
5.拷貝下載好的軟件包到/usr/src/目錄
6.解壓Nginx安裝包
tar -zxf /usr/src/tengine-2.1.2.tar.gz
cd /usr/local/tengine-2.1.2/
7.進(jìn)行檢測
./configure --prefix=/usr/local/nginx --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre
8.編譯
make
9.安裝
make install
10.啟動nginx /usr/local/nginx/sbin/nginx
您的評論需要經(jīng)過審核才能顯示
有用
有用
有用