第十七天內(nèi)容代碼nginx詳解_第1頁(yè)
第十七天內(nèi)容代碼nginx詳解_第2頁(yè)
第十七天內(nèi)容代碼nginx詳解_第3頁(yè)
第十七天內(nèi)容代碼nginx詳解_第4頁(yè)
第十七天內(nèi)容代碼nginx詳解_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余14頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Nginx詳解講師:王承偉Nginx是什么代理服務(wù)器:一般是指局域網(wǎng)內(nèi)部的機(jī)器通過(guò)代理服務(wù)器發(fā)送請(qǐng)求到互聯(lián)網(wǎng)上的服務(wù)器,代理服務(wù)器一般作用在客戶(hù)端。應(yīng)用比如:GoAgent,翻墻神器.反向代理服務(wù)器:在服務(wù)器端接受客戶(hù)端的請(qǐng)求,然后把請(qǐng)求分發(fā)給具體的服務(wù)器進(jìn)行處理,然后再將服務(wù)器的響應(yīng)結(jié)果反饋給客戶(hù)端。Nginx就是其中的一種反向代理服務(wù)器軟件。Nginx:Nginx (engine x) ,Nginx (“engine x”) 是俄羅斯人Igor Sysoev(塞索耶夫)編寫(xiě)的一款高性能的 HTTP 和反向代理服務(wù)器。也是一個(gè)IMAP/POP3/SMTP代理服務(wù)器;也就是說(shuō),Nginx本身就

2、可以托管網(wǎng)站,進(jìn)行HTTP服務(wù)處理,也可以作為反向代理服務(wù)器使用。用戶(hù)A始終認(rèn)為它訪問(wèn)的是原始服務(wù)器B而不是代理服務(wù)器Z,但實(shí)用際上反向代理服務(wù)器接受用戶(hù)A的應(yīng)答,從原始資源服務(wù)器B中取得用戶(hù)A的需求資源,然后發(fā)送給用戶(hù)A。由于防火墻的作用,只允許代理服務(wù)器Z訪問(wèn)原始資源服務(wù)器B。盡管在這個(gè)虛擬的環(huán)境下,防火墻和反向代理的共同作用保護(hù)了原始資源服務(wù)器B,但用戶(hù)A并不知情。 Nginx的應(yīng)用現(xiàn)狀Nginx 已經(jīng)在俄羅斯最大的門(mén)戶(hù)網(wǎng)站 Rambler Media( )上運(yùn)行了3年時(shí)間,同時(shí)俄羅斯超過(guò)20%的虛擬主機(jī)平臺(tái)采用Nginx作為反向代理服務(wù)器。在國(guó)內(nèi),已經(jīng)有 淘寶、新浪博客、新浪播客、網(wǎng)易

3、新聞、六間房、 、Discuz!、水木社區(qū)、豆瓣、YUPOO、海內(nèi)、迅雷在線 等多家網(wǎng)站使用 Nginx 作為Web服務(wù)器或反向代理服務(wù)器。Nginx的特點(diǎn)跨平臺(tái):Nginx 可以在大多數(shù) Unix like OS編譯運(yùn)行,而且也有Windows的移植版本。配置異常簡(jiǎn)單,非常容易上手。配置風(fēng)格跟程序開(kāi)發(fā)一樣,神一般的配置非阻塞、高并發(fā)連接:數(shù)據(jù)復(fù)制時(shí),磁盤(pán)I/O的第一階段是非阻塞的。官方測(cè)試能夠支撐5萬(wàn)并發(fā)連接,在實(shí)際生產(chǎn)環(huán)境中跑到23萬(wàn)并發(fā)連接數(shù).(這得益于Nginx使用了最新的epoll模型)事件驅(qū)動(dòng):通信機(jī)制采用epoll模型,支持更大的并發(fā)連接。master/worker結(jié)構(gòu):一個(gè)ma

4、ster進(jìn)程,生成一個(gè)或多個(gè)worker進(jìn)程內(nèi)存消耗?。禾幚泶蟛l(fā)的請(qǐng)求內(nèi)存消耗非常小。在3萬(wàn)并發(fā)連接下,開(kāi)啟的10個(gè)Nginx 進(jìn)程才消耗150M內(nèi)存(15M*10=150M) 成本低廉:Nginx為開(kāi)源軟件,可以免費(fèi)使用。而購(gòu)買(mǎi)F5 BIG-IP、NetScaler等硬件負(fù)載均衡交換機(jī)則需要十多萬(wàn)至幾十萬(wàn)人民幣內(nèi)置的健康檢查功能:如果 Nginx Proxy 后端的某臺(tái) Web 服務(wù)器宕機(jī)了,不會(huì)影響前端訪問(wèn)。節(jié)省帶寬:支持 GZIP 壓縮,可以添加瀏覽器本地緩存的 Header 頭。穩(wěn)定性高:用于反向代理,宕機(jī)的概率微乎其微Nginx的不為人知的特點(diǎn)nginx代理和后端web服務(wù)器間無(wú)需

5、長(zhǎng)連接;接收用戶(hù)請(qǐng)求是異步的,即先將用戶(hù)請(qǐng)求全部接收下來(lái),再一次性發(fā)送后后端web服務(wù)器,極大的減輕后端web服務(wù)器的壓力發(fā)送響應(yīng)報(bào)文時(shí),是邊接收來(lái)自后端web服務(wù)器的數(shù)據(jù),邊發(fā)送給客戶(hù)端的網(wǎng)絡(luò)依賴(lài)型低。NGINX對(duì)網(wǎng)絡(luò)的依賴(lài)程度非常低,理論上講,只要能夠ping通就可以實(shí)施負(fù)載均衡,而且可以有效區(qū)分內(nèi)網(wǎng)和外網(wǎng)流量支持服務(wù)器檢測(cè)。NGINX能夠根據(jù)應(yīng)用服務(wù)器處理頁(yè)面返回的狀態(tài)碼、超時(shí)信息等檢測(cè)服務(wù)器是否出現(xiàn)故障,并及時(shí)返回錯(cuò)誤的請(qǐng)求重新提交到其它節(jié)點(diǎn)上Nginx的內(nèi)部(進(jìn)程)模型Nginx是如何處理一個(gè)請(qǐng)求首先,nginx在啟動(dòng)時(shí),會(huì)解析配置文件,得到需要監(jiān)聽(tīng)的端口與ip地址,然后在nginx

6、的master進(jìn)程里面,先初始化好這個(gè)監(jiān)控的socket(創(chuàng)建socket,設(shè)置addrreuse等選項(xiàng),綁定到指定的ip地址端口,再listen),然后再fork(一個(gè)現(xiàn)有進(jìn)程可以調(diào)用fork函數(shù)創(chuàng)建一個(gè)新進(jìn)程。由fork創(chuàng)建的新進(jìn)程被稱(chēng)為子進(jìn)程 )出多個(gè)子進(jìn)程出來(lái),然后子進(jìn)程會(huì)競(jìng)爭(zhēng)accept新的連接。此時(shí),客戶(hù)端就可以向nginx發(fā)起連接了。當(dāng)客戶(hù)端與nginx進(jìn)行三次握手,與nginx建立好一個(gè)連接后,此時(shí),某一個(gè)子進(jìn)程會(huì)accept成功,得到這個(gè)建立好的連接的socket,然后創(chuàng)建nginx對(duì)連接的封裝,即ngx_connection_t結(jié)構(gòu)體。接著,設(shè)置讀寫(xiě)事件處理函數(shù)并添加讀寫(xiě)事

7、件來(lái)與客戶(hù)端進(jìn)行數(shù)據(jù)的交換。最后,nginx或客戶(hù)端來(lái)主動(dòng)關(guān)掉連接,到此,一個(gè)連接就壽終正寢了。 當(dāng)然,nginx也是可以作為客戶(hù)端來(lái)請(qǐng)求其它server的數(shù)據(jù)的(如upstream模塊),此時(shí),與其它server創(chuàng)建的連接,也封裝在ngx_connection_t中。作為客戶(hù)端,nginx先獲取一個(gè)ngx_connection_t結(jié)構(gòu)體,然后創(chuàng)建socket,并設(shè)置socket的屬性( 比如非阻塞)。然后再通過(guò)添加讀寫(xiě)事件,調(diào)用connect/read/write來(lái)調(diào)用連接,最后關(guān)掉連接,并釋放ngx_connection_t。 Nginx典型的應(yīng)用場(chǎng)景Nginx的應(yīng)用到官網(wǎng)下載Window

8、s版本,下載地址: 解壓到磁盤(pán)任一目錄修改配置文件:具體參考備注。啟動(dòng)服務(wù):直接運(yùn)行nginx.exe,缺點(diǎn)控制臺(tái)窗口關(guān)閉,服務(wù)關(guān)閉。守護(hù)進(jìn)程的方式啟動(dòng):start nginx.exe停止服務(wù):nginx -s stop重新加載配置:nginx -s reloadNginx常見(jiàn)配置說(shuō)明(1)worker_processes 8;#nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù)worker_connections 65535;#單個(gè)進(jìn)程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù))client_header_buffer_size 32k; #上傳文件大小限制large_client_header_b

9、uffers 4 64k; #設(shè)定請(qǐng)求緩client_max_body_size 8m; #設(shè)定請(qǐng)求緩autoindex on; #開(kāi)啟目錄列表訪問(wèn),合適下載服務(wù)器,默認(rèn)關(guān)閉。tcp_nopush on; #防止網(wǎng)絡(luò)阻塞tcp_nodelay on; #防止網(wǎng)絡(luò)阻塞keepalive_timeout 120; #長(zhǎng)連接超時(shí)時(shí)間,單位是秒gzip on; #開(kāi)啟gzip壓縮輸出gzip_min_length 1k; #最小壓縮文件大小gzip_buffers 4 16k; #壓縮緩沖區(qū)gzip_http_version 1.0; #壓縮版本(默認(rèn)1.1,前端如果是squid2.5請(qǐng)使用1.0)

10、p_level 2; #壓縮等級(jí)Nginx常見(jiàn)配置說(shuō)明(2)upstream #upstream的負(fù)載均衡,weight是權(quán)重,可以根據(jù)機(jī)器配置定義權(quán)重。weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大。server 21:80 weight=3;server 22:80 weight=2;server 23:80 weight=3;Nginx常見(jiàn)配置說(shuō)明(3)#虛擬主機(jī)的配置server#監(jiān)聽(tīng)端口listen 80;#域名可以有多個(gè),用空格隔開(kāi)server_name ;index index.html index.htm index.php;root /data/www/ha97;location .*.(php|php5)?$fastcgi_pass :9000;fastcgi_i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論