nginx服務(wù)器有什么作用?什么叫反向代理?為什么要使用反向代理?

? ? ? ?大家好,我是IT修真院成都分院第8期的JAVA學(xué)員鄒蘇,一枚正直純潔善良的java程序員。 今天給大家分享一下,修真院官網(wǎng)Java任務(wù)2,深度思考中的知識(shí)點(diǎn)————nginx服務(wù)器有什么作用?什么叫反向代理?為什么要使用反向代理?

1.背景介紹

nginx是什么?

Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,

其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類(lèi)型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,

中國(guó)大陸使用nginx網(wǎng)站用戶(hù)有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等

2.知識(shí)剖析

nginx服務(wù)器有什么作用?

1、反向代理:反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,

然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶(hù)端,

簡(jiǎn)單來(lái)說(shuō)就是真實(shí)的服務(wù)器不能直接被外部網(wǎng)絡(luò)訪(fǎng)問(wèn),想要訪(fǎng)問(wèn)必須通過(guò)代理。

2、負(fù)載均衡:負(fù)載均衡也是 Nginx 常用的一個(gè)功能,當(dāng)有2臺(tái)或以上服務(wù)器時(shí),根據(jù)規(guī)則隨機(jī)的將請(qǐng)求分發(fā)到指定的服務(wù)器上處理,

負(fù)載均衡配置一般都需要同時(shí)配置反向代理,通過(guò)反向代理跳轉(zhuǎn)到負(fù)載均衡。而Nginx目前支持自帶3種負(fù)載均衡策略,

還有2種常用的第三方策略。

3、HTTP服務(wù)器:Nginx本身也是一個(gè)靜態(tài)資源的服務(wù)器,當(dāng)只有靜態(tài)資源的時(shí)候,就可以使用Nginx來(lái)做服務(wù)器,同時(shí)現(xiàn)在也很流行動(dòng)靜分離,就可以通過(guò)Nginx來(lái)實(shí)現(xiàn)

4、正向代理:意思是一個(gè)位于客戶(hù)端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶(hù)端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),

然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶(hù)端。

為什么要使用反向代理?

反向代理的主要作用是分發(fā)請(qǐng)求。

假定一個(gè)接口請(qǐng)求返回?cái)?shù)據(jù)100k,10個(gè)并發(fā)請(qǐng)求就是1M,那么千兆網(wǎng)卡,可以支撐并發(fā)10000個(gè)請(qǐng)求

,假設(shè)我們收到請(qǐng)求馬上就返回,那么最高并發(fā)數(shù)就是我們上面計(jì)算的結(jié)果,但是,問(wèn)題在于,

應(yīng)用服務(wù)器做不到馬上返回,因?yàn)樗泻芏鄻I(yè)務(wù)邏輯需要執(zhí)行處理,

比如給用戶(hù)發(fā)推送發(fā)短信發(fā)郵件,本地磁盤(pán)寫(xiě)日志,請(qǐng)求數(shù)據(jù)庫(kù)增刪改查,調(diào)用微信的登錄接口等等等等。

木桶理論取最短板,假如拖后腿的這個(gè),最佳狀態(tài)也只能優(yōu)化到支持1000個(gè)并發(fā),

那就尷尬了,本來(lái)能支持10000個(gè)請(qǐng)求的系統(tǒng),只能用到1/10性能。

單個(gè)公網(wǎng)ip算一個(gè)節(jié)點(diǎn)的話(huà),這個(gè)節(jié)點(diǎn)本來(lái)的潛力是響應(yīng)10000個(gè)并發(fā)請(qǐng)求,實(shí)際在應(yīng)用層面只能到1000并發(fā),

潛力還未發(fā)掘。這個(gè)時(shí)候,就是反向代理起到用武之地的時(shí)候了。

首先一個(gè)反向代理的服務(wù)器拋開(kāi)所有業(yè)務(wù)層的東西,只單純的接下請(qǐng)求再返回,那么可以支持到10000并發(fā)了。

接下來(lái)應(yīng)用層面誰(shuí)來(lái)處理?找來(lái)10個(gè)小弟,轉(zhuǎn)發(fā)給他們,每人1000正好。

這樣這個(gè)節(jié)點(diǎn)系統(tǒng)就用到了10/11的性能了。

3.常見(jiàn)問(wèn)題

4.解決方案

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

幾種負(fù)載均衡策略:

1、RR(默認(rèn)):

每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。

2、權(quán)重:

指定輪詢(xún)幾率,weight和訪(fǎng)問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。

3、ip_hash

前面2種方式,在下一個(gè)請(qǐng)求來(lái)的時(shí)候請(qǐng)求可能分發(fā)到另外一個(gè)服務(wù)器,當(dāng)我們的程序不是無(wú)狀態(tài)的時(shí)候(采用了session保存數(shù)據(jù)),

這時(shí)候就有一個(gè)很大的很問(wèn)題了,比如把登錄信息保存到了session中,那么跳轉(zhuǎn)到另外一臺(tái)服務(wù)器的時(shí)候就需要重新登錄了,

所以很多時(shí)候我們需要一個(gè)客戶(hù)只訪(fǎng)問(wèn)一個(gè)服務(wù)器,那么就需要用iphash了,

iphash的每個(gè)請(qǐng)求按訪(fǎng)問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪(fǎng)客固定訪(fǎng)問(wèn)一個(gè)后端服務(wù)器,可以解決session的問(wèn)題。

4、fair(第三方)

按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。

下載地址:https://github.com/gnosek/nginx-upstream-fair?spm=5176.100239.blogcont73621.10.7QrfAw

5、url_hash(第三方)

按訪(fǎng)問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。

7.參考文獻(xiàn)

https://www.zhihu.com/question/19761434

http://www.linuxidc.com/Linux/2017-04/142962.htm


PPT :PPT

騰訊視頻:



undefined_騰訊視頻


問(wèn)題:

ip_hash 的弊端是什么?

一句話(huà),造成負(fù)載不均。

你用的那個(gè)工具是什么呀?看起來(lái)比xshell好點(diǎn)?

mobaxterm.

除了nginx還有別的做負(fù)載均衡的方法嗎?

tengine、dubbo

能不能說(shuō)一下反向代理和正向代理區(qū)別?

用途上來(lái)講:

正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶(hù)端提供訪(fǎng)問(wèn)Internet的途徑。正向代理還可以使用緩沖特性減少網(wǎng)絡(luò)使用率。反向代理的典型用途是將 防火墻后面的服務(wù)器提供給Internet用戶(hù)訪(fǎng)問(wèn)。反向代理還可以為后端的多臺(tái)服務(wù)器提供負(fù)載平衡,或?yàn)楹蠖溯^慢的服務(wù)器提供緩沖服務(wù)。

另外,反向代理還可以啟用高級(jí)URL策略和管理技術(shù),從而使處于不同web服務(wù)器系統(tǒng)的web頁(yè)面同時(shí)存在于同一個(gè)URL空間下。

從安全性來(lái)講:

正向代理允許客戶(hù)端通過(guò)它訪(fǎng)問(wèn)任意網(wǎng)站并且隱藏客戶(hù)端自身,因此你必須采取安全措施以確保僅為經(jīng)過(guò)授權(quán)的客戶(hù)端提供服務(wù)。

反向代理對(duì)外都是透明的,訪(fǎng)問(wèn)者并不知道自己訪(fǎng)問(wèn)的是一個(gè)代理。

感謝大家觀看!

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

技能樹(shù).IT修真院

“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開(kāi)始,找個(gè)師兄,帶你入門(mén),掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷?!薄?/p>

這里是技能樹(shù).IT修真院,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線(xiàn),學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化,師兄1對(duì)1免費(fèi)指導(dǎo)??靵?lái)與我一起學(xué)習(xí)吧~

我的邀請(qǐng)碼:17701057,或者你可以直接點(diǎn)擊此鏈接:http://www.jnshu.com/login/1/17701057

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容