溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Nginx專(zhuān)題(1):Nginx之反向代理及配置

發(fā)布時(shí)間:2020-06-29 14:23:27 來(lái)源:網(wǎng)絡(luò) 閱讀:2707 作者:宜信技術(shù) 欄目:系統(tǒng)運(yùn)維

摘要:本文從Nginx的概念出發(fā),分別從反向代理的概念、優(yōu)勢(shì)、配置代碼3個(gè)方面介紹了Nginx的特性之一反向代理。

文章來(lái)源:宜信技術(shù)學(xué)院 & 宜信支付結(jié)算團(tuán)隊(duì)技術(shù)分享第一期-宜信支付結(jié)算八方數(shù)據(jù)團(tuán)隊(duì)高級(jí)技術(shù)經(jīng)理 周恒《Nginx的細(xì)枝末節(jié)》

分享者:宜信支付結(jié)算八方數(shù)據(jù)團(tuán)隊(duì)高級(jí)技術(shù)經(jīng)理 周恒

原文首發(fā)于支付結(jié)算技術(shù)團(tuán)隊(duì)公號(hào):野指針

一、Nginx概念解讀

對(duì)于新事物的理解,最好的方式就是從概念入手,本文作為《Nginx專(zhuān)題》系列文章的第一篇,先從Nginx的名稱(chēng)開(kāi)始來(lái)分解這個(gè)神秘的引擎。

Nginx,是engine X的縮寫(xiě),發(fā)音也是'engine x',2004年由俄羅斯大神伊戈?duì)枴べ愃饕蜷_(kāi)發(fā),提供了高性能而易用的HTTP反向代理功能。后期還加入了TCP的反向代理支持。

最初Nginx是為了解決早年的C10K問(wèn)題而生的。什么是C10K呢?C代表Client客戶(hù)、10K代表10000,即一臺(tái)服務(wù)器同時(shí)保持1萬(wàn)鏈接。這在當(dāng)時(shí)是一個(gè)非常棘手的問(wèn)題。

通過(guò)Google搜索Nginx會(huì)得到以下解釋?zhuān)?/p>

Nginx是異步框架的網(wǎng)頁(yè)服務(wù)器,也可以用作反向代理、負(fù)載平衡器和HTTP緩存。

從這句話(huà)中,我們可以得到下面幾個(gè)關(guān)鍵:

本專(zhuān)題文章將分別從這幾個(gè)關(guān)鍵詞來(lái)解讀Nginx的強(qiáng)大之處。本文先介紹Nginx特性之反向代理及其配置實(shí)現(xiàn)。?

二、反向代理

2.1 什么是反向代理

代理在生活中非常常見(jiàn),房屋中介是代理、終端零售是代理、選舉代表是代理。這些代理都可以幫助需求方減輕很多工作的復(fù)雜度,提升效率和體驗(yàn)。

網(wǎng)絡(luò)里的代理服務(wù)是什么樣子,我想各位讀者也非常清楚,這里再簡(jiǎn)單回顧一下:假設(shè)我們想在公司上網(wǎng)看B站的視頻,而規(guī)范的公司出于安全和辦公效率的考慮,設(shè)置了網(wǎng)絡(luò)策略,不允許訪(fǎng)問(wèn)視頻網(wǎng)站,聰明的程序員不可能被這些事情所打敗,只要購(gòu)買(mǎi)一臺(tái)云服務(wù),搭建代理服務(wù),把瀏覽器設(shè)置上代理,就可以輕松訪(fǎng)問(wèn)視頻網(wǎng)站。這就是常見(jiàn)的代理。

Nginx專(zhuān)題(1):Nginx之反向代理及配置

那么現(xiàn)在問(wèn)題來(lái)了:“代理”大家都懂,這里為什么強(qiáng)調(diào)是反向代理呢?難道還有正向代理?答案是肯定的。

正向代理就是大家常見(jiàn)的代理,以請(qǐng)求端也就是客戶(hù)端的角度為正向,用戶(hù)發(fā)出請(qǐng)求經(jīng)過(guò)的代理,稱(chēng)為“正向代理”。這時(shí)是用戶(hù)主動(dòng)選擇使用代理。

反向代理:先看圖再解釋。

Nginx專(zhuān)題(1):Nginx之反向代理及配置

主動(dòng)權(quán)被反轉(zhuǎn),原來(lái)是客戶(hù)端選擇代理,現(xiàn)在是代理選擇服務(wù)端節(jié)點(diǎn)。由于控制權(quán)的反轉(zhuǎn),這樣的代理被稱(chēng)為“反向代理”。

2.2 反向代理的優(yōu)點(diǎn)

1)保護(hù)服務(wù)安全

  • 隱藏服務(wù)節(jié)點(diǎn)的IP;
  • 將服務(wù)節(jié)點(diǎn)置于防火墻之后,避免直接攻ji業(yè)務(wù)節(jié)點(diǎn)服務(wù)器。

2)服務(wù)節(jié)點(diǎn)更專(zhuān)注于業(yè)務(wù),同時(shí)提升性能

  • 由于有反向代理的存在,可以讓反向代理服務(wù)器去實(shí)現(xiàn)比如https、gzip壓縮等與業(yè)務(wù)無(wú)關(guān)的功能;
  • 提供動(dòng)靜態(tài)分離,將靜態(tài)文件發(fā)往靜態(tài)服務(wù)器或本地文件系統(tǒng),避免業(yè)務(wù)節(jié)點(diǎn)處理這些與業(yè)務(wù)無(wú)關(guān)的請(qǐng)求;
  • 提供緩存機(jī)制,將一些短時(shí)間內(nèi)不會(huì)變化的動(dòng)態(tài)內(nèi)容,在反向代理服務(wù)器這層增加緩存,降低業(yè)務(wù)服務(wù)器的請(qǐng)求量;
  • 由于控制權(quán)在代理服務(wù)這邊,完全可以根據(jù)服務(wù)節(jié)點(diǎn)的性能動(dòng)態(tài)分配請(qǐng)求,做到服務(wù)節(jié)點(diǎn)性能最佳。

正是由于Ngxin引入了反向代理的特性,讓請(qǐng)求和響應(yīng)都要經(jīng)過(guò)Nginx,因此給Nginx帶來(lái)了非常多的可能。比如負(fù)載均衡、HTTP緩存等。

Nginx專(zhuān)題(1):Nginx之反向代理及配置

三、反向代理的配置

Nginx中關(guān)于反向代理的配置相當(dāng)簡(jiǎn)單。

3.1 配置一個(gè)單節(jié)點(diǎn)的反向代理

# simple reverse-proxy
server { 
    listen       80;
    server_name  big.server.com;
    access_log   logs/big.server.access.log  main;

    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
      proxy_pass      http://127.0.0.1:8080;
    }
  }

這里定義的規(guī)則是以big.server.com域名來(lái)請(qǐng)求Nginx的80端口,會(huì)將請(qǐng)求代理到127.0.0.1:8080上。

3.2 配置一組反向代理的服務(wù)節(jié)點(diǎn)。

1)配置一組反向代理并命名。

upstream big_server_com {
    server 192.168.0.1:8000;
    server 192.168.0.1:8001;
}

這里定義了upstream,這個(gè)upstream可以理解為上傳流,之所以叫上傳是因?yàn)椋簭姆?wù)器獲取數(shù)據(jù)叫下載,向服務(wù)器發(fā)送數(shù)據(jù)就叫上傳,這里是將數(shù)據(jù)請(qǐng)求發(fā)送到服務(wù)節(jié)點(diǎn),所以叫上傳。

給這組服務(wù)節(jié)點(diǎn)命名為big_server_com,其中包括兩個(gè)節(jié)點(diǎn),分別是:192.168.0.1:8000和192.168.0.1:8001。

2)配置規(guī)則:讓滿(mǎn)足的請(qǐng)求能夠反向代理到這組服務(wù)節(jié)點(diǎn)中。

server { 
    listen          80;
    server_name     big.server.com;
    access_log      logs/big.server.access.log main;

    location / {
      proxy_pass      http://big_server_com;
    }
  }

這里定義的規(guī)則是以big.server.com域名來(lái)請(qǐng)求Nginx的80端口,請(qǐng)求url是以/為后綴的所有請(qǐng)求,都會(huì)轉(zhuǎn)發(fā)到前面定義的名字為big_server_com的服務(wù)節(jié)點(diǎn)組。

四、總結(jié)

本文從Nginx的概念出發(fā),分別從反向代理的概念、優(yōu)勢(shì)、配置代碼3個(gè)方面介紹了Nginx的特性之一反向代理。后續(xù)文章將繼續(xù)介紹Nginx的另外三個(gè)特性:負(fù)載均衡、HTTP緩存、異步框架,敬請(qǐng)期待。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI