一、什么是nginx:
1、概念:Nginx?(engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器。
2、什么是代理服務(wù)器:
概念:代理服務(wù)器是介于客戶端和Web服務(wù)器之間的另一臺(tái)服務(wù)器,有了它之后,瀏覽器不是直接到Web服務(wù)器去取回網(wǎng)頁(yè)信息,而是通過(guò)向代理服務(wù)器發(fā)送請(qǐng)求,信號(hào)會(huì)先送到代理服務(wù)器,由代理服務(wù)器來(lái)取回瀏覽器所需要的信息并傳送給你的瀏覽器。
?一個(gè)完整的代理請(qǐng)求過(guò)程為:客戶端首先與代理服務(wù)器創(chuàng)建連接,然后根據(jù)代理服務(wù)器所使用的代理協(xié)議,請(qǐng)求對(duì)目標(biāo)服務(wù)器創(chuàng)建連接、或則獲得目標(biāo)服務(wù)器的指定資源。Web代理服務(wù)器是網(wǎng)絡(luò)的中間實(shí)體。代理位于Web客戶端和Web服務(wù)器之間,扮演“中間人”的角色。
HTTP的代理服務(wù)器既是Web服務(wù)器又是Web客戶端。
3、什么是正向代理和反向代理:
(1)正向代理:是一個(gè)位于客戶端和原始服務(wù)器之間的服務(wù)器,為了從原始服務(wù)器取的內(nèi)容,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端,客戶端必須要進(jìn)行一些特別的設(shè)置才能使用正向代理。
?正向代理代理的對(duì)象是客戶端,正向代理中,proxy和client同屬一個(gè)LAN,對(duì)server(服務(wù)端)透明;
VPN就是典型的正向代理,其用到的就是代理技術(shù)
注:LAN的概念:局域網(wǎng),網(wǎng)絡(luò)種類,覆蓋范圍一般是方圓幾千米之內(nèi),其具備的安裝便捷、成本節(jié)約、擴(kuò)展方便等特點(diǎn)使其在各類辦公室內(nèi)運(yùn)用廣泛。局域網(wǎng)可以實(shí)現(xiàn)文件管理、應(yīng)用軟件共享、打印機(jī)共享等功能,在使用過(guò)程當(dāng)中,通過(guò)維護(hù)局域網(wǎng)網(wǎng)絡(luò)安全,能夠有效地保護(hù)資料安全,保證局域網(wǎng)網(wǎng)絡(luò)能夠正常穩(wěn)定的運(yùn)行。
? ? ? ?WAN的概念:(英語(yǔ):Wide Area Network,縮寫為 WAN)廣域網(wǎng),又稱外網(wǎng)、公網(wǎng)。是連接不同地區(qū)局域網(wǎng)或城域網(wǎng)計(jì)算機(jī)通信的遠(yuǎn)程網(wǎng)。通??缃雍艽蟮奈锢矸秶?,所覆蓋的范圍從幾十公里到幾千公里,它能連接多個(gè)地區(qū)、城市和國(guó)家,或橫跨幾個(gè)洲并能提供遠(yuǎn)距離通信,形成國(guó)際性的遠(yuǎn)程網(wǎng)絡(luò)。廣域網(wǎng)并不等同于互聯(lián)網(wǎng)。
?
(2)反向代理:
反向代理服務(wù)器:在服務(wù)器端接收客戶端的請(qǐng)求,然后把請(qǐng)求分發(fā)給具體的服務(wù)器進(jìn)行處理,然后再將服務(wù)器的響應(yīng)結(jié)果反饋給客戶端。Nginx就是其中的一種反向代理服務(wù)器軟件。
?反向代理代理的對(duì)象是服務(wù)端,反向代理中,proxy和server同屬一個(gè)LAN,對(duì)client(客戶端)透明;
?重點(diǎn)注意?。?!
正向代理客戶端必須設(shè)置正向代理服務(wù)器,當(dāng)然前提是要知道正向代理服務(wù)器的IP地址,還有代理程序的端口。
反向代理正好與正向代理相反,對(duì)于客戶端而言代理服務(wù)器就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置??蛻舳讼蚍聪虼淼拿臻g中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向哪個(gè)原始服務(wù)器轉(zhuǎn)交請(qǐng)求,并將獲得的內(nèi)容返回給客戶端。
二、Nginx?框架模型介紹:
1、進(jìn)程組件角色:
? Master 進(jìn)程:監(jiān)視工作進(jìn)程的狀態(tài) ; 當(dāng)工作進(jìn)程死掉后重啟一個(gè)新的 ; 處理信號(hào)和通知工作進(jìn)程。
? Worker 進(jìn)程:處理客戶端請(qǐng)求,從主進(jìn)程處獲得信號(hào)做相應(yīng)的事情。
? Cache Loader 進(jìn)程:加載緩存索引文件信息,然后退出。
? Cache Manager 進(jìn)程:管理磁盤的緩存大小,超過(guò)預(yù)定值大小后最少使用數(shù)據(jù)將被刪除。
?
2、Nginx 的框架模型如下圖:(一主多從)
3、?框架模型流程如下圖:
??nginx采用多進(jìn)程的模式,nginx在啟動(dòng)后,會(huì)有一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程。master進(jìn)程主要用來(lái)管理worker進(jìn)程,包含:接收來(lái)自外界的信號(hào),向各worker進(jìn)程發(fā)送信號(hào),監(jiān)控worker進(jìn)程的運(yùn)行狀態(tài),當(dāng)worker進(jìn)程退出后(異常情況下),會(huì)自動(dòng)重新啟動(dòng)新的worker進(jìn)程。而基本的網(wǎng)絡(luò)事件,則是放在worker進(jìn)程中來(lái)處理了。多個(gè)worker進(jìn)程之間是對(duì)等的,他們同等競(jìng)爭(zhēng)來(lái)自客戶端的請(qǐng)求,各進(jìn)程互相之間是獨(dú)立的。一個(gè)請(qǐng)求,只可能在一個(gè)worker進(jìn)程中處理,一個(gè)worker進(jìn)程,不可能處理其它進(jìn)程的請(qǐng)求。
4、Nginx 的請(qǐng)求處理流程:
?最左邊在 WEB、EMAIL 和 TCP,也就是說(shuō)大致有三種流量從這里進(jìn)入 Nginx 以后,我們 Nginx 中有三個(gè)大的狀態(tài)機(jī),一個(gè)是處理 TCP/UDP 的 4 層的傳輸層狀態(tài)機(jī)和處理應(yīng)用層的 HTTP 狀態(tài)以及處理郵件的 MAIL 狀態(tài)機(jī)。
三、Nginx的負(fù)載均衡:
分類:Nginx提供的負(fù)載均衡策略有2種:內(nèi)置策略和擴(kuò)展策略。內(nèi)置策略為輪詢,加權(quán)輪詢,Ip hash。擴(kuò)展策略,fair、url_hash。
內(nèi)置策略:
1、輪詢:
? ? ? ? ? ? ?每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
?2、加權(quán)輪詢:
指定輪詢幾率,weight和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。
3、iphash:
iphash對(duì)客戶端請(qǐng)求的ip進(jìn)行hash操作,然后根據(jù)hash結(jié)果將同一個(gè)客戶端ip的請(qǐng)求分發(fā)給同一臺(tái)服務(wù)器進(jìn)行處理,可以解決session不共享的問(wèn)題。?
擴(kuò)展策略
4、fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
5、url_hash(第三方)
按訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。 在upstream中加入hash語(yǔ)句,server語(yǔ)句中不能寫入weight等其他的參數(shù),hash_method是使用的hash算法。
注:這里還有一個(gè)知識(shí)點(diǎn)!?。?/h3>
動(dòng)靜分離:
在我們的軟件開(kāi)發(fā)中,有些請(qǐng)求是需要后臺(tái)處理的,有些請(qǐng)求是不需要經(jīng)過(guò)后臺(tái)處理的(如:css、html、jpg、js等等文件),這些不需要經(jīng)過(guò)后臺(tái)處理的文件稱為靜態(tài)文件。讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開(kāi)來(lái),動(dòng)靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作。提高資源響應(yīng)的速度。
?
四、nginx的使用:
1、下載nginx
http://nginx.org/en/download.html 下載穩(wěn)定版本。
以nginx/Windows-1.16.1為例,直接下載 nginx-1.16.1.zip。
下載后解壓,解壓后如下:
2、啟動(dòng)nginx
有很多種方法啟動(dòng)nginx
(1)直接雙擊nginx.exe,雙擊后一個(gè)黑色的彈窗一閃而過(guò)
(2)打開(kāi)cmd命令窗口,切換到nginx解壓目錄下,輸入命令 nginx.exe ,回車即可
3、檢查nginx是否啟動(dòng)成功
直接在瀏覽器地址欄輸入網(wǎng)址 http://localhost:80 回車,出現(xiàn)以下頁(yè)面說(shuō)明啟動(dòng)成功!
4、配置監(jiān)聽(tīng)
nginx的配置文件是conf目錄下的nginx.conf,默認(rèn)配置的nginx監(jiān)聽(tīng)的端口為80,如果80端口被占用可以修改為未被占用的端口即可。
當(dāng)我們修改了nginx的配置文件nginx.conf 時(shí),不需要關(guān)閉nginx后重新啟動(dòng)nginx,只需要執(zhí)行命令 nginx -s reload 即可讓改動(dòng)生效
5、關(guān)閉nginx
如果使用cmd命令窗口啟動(dòng)nginx, 關(guān)閉cmd窗口是不能結(jié)束nginx進(jìn)程的,可使用兩種方法關(guān)閉nginx
(1)輸入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-756741.html
(2)使用taskkill taskkill /f /t /im nginx.exe文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-756741.html
taskkill是用來(lái)終止進(jìn)程的,
/f是強(qiáng)制終止 .
/t終止指定的進(jìn)程和任何由此啟動(dòng)的子進(jìn)程。
/im示指定的進(jìn)程名稱 .
6、nginx常用命令:
cd /usr/local/nginx/sbin/
./nginx 啟動(dòng)
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加載配置文件
ps aux|grep nginx 查看nginx進(jìn)程
?啟動(dòng)成功訪問(wèn) 服務(wù)器ip:80
到了這里,關(guān)于Nginx HTTP和反向代理服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!