成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Nginx反向代理升級(jí)--upstream改造proxy_pass

harryhappy / 3184人閱讀

摘要:同時(shí)若不想破壞已經(jīng)做好的的話(huà),也可以不使用,直接轉(zhuǎn)發(fā)到服務(wù)器的內(nèi)網(wǎng)應(yīng)該也是可以的。這樣在安全和效率高上就都能得到一定的提升。

之前寫(xiě)了一些nginx的東西,這次繼續(xù),主要使用upstream針對(duì)proxy_pass轉(zhuǎn)發(fā)做個(gè)處理
一般情況下我們?cè)谑褂胣ginx反向代理的時(shí)候,都是如下配置,

...
location /api {
   proxy_pass https://b.test.com; # 設(shè)置代理服務(wù)器的協(xié)議和地址
   proxy_cookie_domain b.test.com  a.test.com; # 修改cookie,針對(duì)request和response互相寫(xiě)入cookie
}       
...

這樣就實(shí)現(xiàn)了"/api"目錄接口的轉(zhuǎn)發(fā)。功能是實(shí)現(xiàn)了,但是有什么問(wèn)題么?還真有!
如果我們可以反向代理,如果別人也知道了我們的接口域名也不是可以自己搭一個(gè)nginx服務(wù)器就可以代理到我們的接口服務(wù)器上去???是不是感覺(jué)很危險(xiǎn),是的。。。對(duì)此當(dāng)時(shí)做的時(shí)候就加了一個(gè)臨時(shí)方案,在接口服務(wù)中添加一個(gè)ip白名單,白名單中的ip都是nginx服務(wù)器的ip,然后就項(xiàng)目上線(xiàn)了。這樣也實(shí)現(xiàn)了需求,但ip如果被偽造了怎么辦?于是我們想到了另一個(gè)方案,使用內(nèi)網(wǎng)IP代替對(duì)外開(kāi)放的域名,這樣在一定程度上就直接攔截了外部的直接訪問(wèn),具體實(shí)現(xiàn)如下,

upstream apiServer {
    server 10.10.10.10.:8888
}
...
location /api {
   proxy_pass http://apiServer; 
   proxy_cookie_domain apiServer a.test.com; 
}       
...

我們使用upstream定義了一個(gè)apiServer的組,將轉(zhuǎn)發(fā)都指向這里,這時(shí)相當(dāng)于我們把可能存在的用戶(hù)直接訪問(wèn)接口服務(wù)器的可能給關(guān)閉了,也就是途中紅色的那部分危險(xiǎn)操作~~

可能你會(huì)想upstream的使用純屬多余,的確當(dāng)apiServer只有一臺(tái)機(jī)器的時(shí)候,這個(gè)的確可以不用,但是多臺(tái)機(jī)器的時(shí)候,雖然proxy_pass雖然可以定義多條但是太麻煩了。。。使用upstream組統(tǒng)一管理即可,同時(shí)使用upstream還有一些優(yōu)勢(shì)比如給多個(gè)server設(shè)置負(fù)載均衡,upstream組中支持通過(guò)weight參數(shù)來(lái)設(shè)置當(dāng)前server在負(fù)載均衡中所占的比重,此外還可以通過(guò)設(shè)置backup參數(shù)指定某些服務(wù)器作為備份機(jī)等等。詳細(xì)的配置內(nèi)容還是建議大家參考Nginx upstream官方文檔。
此外,除了安全性方面,使用內(nèi)網(wǎng)ip進(jìn)行接口轉(zhuǎn)發(fā)也省去了轉(zhuǎn)發(fā)中的DNS重新解析的過(guò)程,有利于大幅提升接口轉(zhuǎn)發(fā)效率。同時(shí)若不想破壞已經(jīng)做好的SLB的話(huà),也可以不使用upstream,直接轉(zhuǎn)發(fā)到SLB服務(wù)器的內(nèi)網(wǎng)ip應(yīng)該也是可以的。

綜上,在proxy_pass轉(zhuǎn)發(fā)中我們使用了兩種方案來(lái)對(duì)安全性做一些提升

proxy_pass轉(zhuǎn)發(fā)到外網(wǎng)域名,同時(shí)在接口服務(wù)器上添加訪問(wèn)來(lái)源白名單,把nginx服務(wù)器的ip寫(xiě)進(jìn)去

proxy_pass轉(zhuǎn)發(fā)到內(nèi)網(wǎng)域名,多服務(wù)器的話(huà)使用upstream統(tǒng)一管理并實(shí)現(xiàn)負(fù)載均衡,也能提升轉(zhuǎn)發(fā)效率

第二種方案是不是通用的呢?這樣可行的話(huà),我們的接口服務(wù)器是不是都不用設(shè)置外網(wǎng)可訪問(wèn)的域名了呢?
第二種方案是可以通用的,但是這不意味著我們就可以?huà)仐壨獠靠稍L問(wèn)的域名,因?yàn)樵谝粋€(gè)落地業(yè)務(wù)中,比如第三方授權(quán)、微信支付等情況下外部可訪問(wèn)域名還是必須要有的。因此只有那些不需要與第三方進(jìn)行通信,比如僅供公司內(nèi)部使用的管理系統(tǒng)等,就可以直接拋棄外網(wǎng)域名了。此時(shí)個(gè)人建議就是上面兩種方案結(jié)合一下:

proxy_pass的轉(zhuǎn)發(fā)使用內(nèi)網(wǎng)ip,來(lái)提升轉(zhuǎn)發(fā)效率,同時(shí)對(duì)外部訪問(wèn)添加白名單,只暴露需要和第三方通信的接口即可。

這樣在安全和效率高上就都能得到一定的提升。

如有錯(cuò)誤,歡迎大家指正
好好學(xué)習(xí),天天向上~~


此處添加一個(gè)修正,最初版原文中在proxy_pass后面我們使用了https+upstream的方式進(jìn)行轉(zhuǎn)發(fā),但是在生產(chǎn)環(huán)境上發(fā)現(xiàn)使用https出現(xiàn)服務(wù)器502網(wǎng)關(guān)問(wèn)題。

...
location /api {
   proxy_pass https://apiServer; 
   proxy_cookie_domain apiServer a.test.com; 
}       
...

upstream不用寫(xiě)https,把https換成了http,問(wèn)題解決。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40209.html

相關(guān)文章

  • Nginx反向代理與負(fù)載均衡

    摘要:負(fù)載均衡嚴(yán)格來(lái)說(shuō),僅僅是作為反向代理的使用的,但是因?yàn)檫@個(gè)反向代理功能表現(xiàn)的效果是負(fù)載均衡機(jī)器的效果,因此負(fù)載均衡是特殊的反向代理。 反向代理 反向代理指的是以代理服務(wù)器接收用戶(hù)的的訪問(wèn)請(qǐng)求,代理用戶(hù)向內(nèi)部服務(wù)器重新發(fā)起請(qǐng)求,最后把內(nèi)部服務(wù)器的響應(yīng)信息返回給用戶(hù)。這樣,代理服務(wù)器對(duì)外就表現(xiàn)為一臺(tái)服務(wù)器,而訪問(wèn)內(nèi)部服務(wù)器的客戶(hù)端用的就是代理服務(wù)器,而不是真實(shí)網(wǎng)站訪問(wèn)用戶(hù)。 為什么使用反向...

    fai1017 評(píng)論0 收藏0
  • nginx(三):反向代理

    摘要:反向代理模塊何為反向代理接收客戶(hù)端請(qǐng)求,并把請(qǐng)求交給后端服務(wù)器處理,后端服務(wù)器處理完成后,響應(yīng)通過(guò)反向代理服務(wù)器返回給客戶(hù)端。作為反向代理服務(wù)器經(jīng)常要配置一組服務(wù)器,以實(shí)現(xiàn)負(fù)載均衡。 1、nginx反向代理模塊 何為反向代理?接收客戶(hù)端請(qǐng)求,并把請(qǐng)求交給后端服務(wù)器處理,后端服務(wù)器處理完成后,響應(yīng)通過(guò)反向代理服務(wù)器返回給客戶(hù)端。反向代理可實(shí)現(xiàn)局域網(wǎng)中的服務(wù)器可被公網(wǎng)中的客戶(hù)端訪問(wèn),也可實(shí)...

    cloud 評(píng)論0 收藏0
  • 為Yii2配置Nginx反向代理緩存提高并發(fā)支持

    摘要:首先,在的主配置文件里先設(shè)置好與緩存相關(guān)的配置這里需要先手工建立與緩存相應(yīng)的目錄,并且把它設(shè)置為可讀寫(xiě)。另外如果升級(jí)成,對(duì)不用緩存的部分性能也會(huì)有提升,這就不在本文討論的范圍之內(nèi)了。 現(xiàn)有一個(gè)系統(tǒng)是用Yii2框架開(kāi)發(fā)的,Web服務(wù)器采用Nginx+php-fpm,由于沒(méi)有使用Nginx的反向代理緩存技術(shù),用Apache的ab一壓就死掉了,QPS只能達(dá)到7或者8的水平,像這樣是無(wú)法支持高...

    callmewhy 評(píng)論0 收藏0
  • PHP-FPM,Nginx,FastCGI 之間的關(guān)系

    摘要:本文介紹三者之間的關(guān)系,以及反向代理和負(fù)載均衡的配置。先使用負(fù)載均衡模塊找到一臺(tái)主機(jī),再使用模塊實(shí)現(xiàn)與這臺(tái)主機(jī)的交互。負(fù)載均衡配置該例定義了一個(gè)的負(fù)載均衡配置,通過(guò)反向代理指令應(yīng)用這個(gè)配置。 本文介紹 PHP-FPM,Nginx,FastCGI 三者之間的關(guān)系,以及 Nginx 反向代理和負(fù)載均衡的配置。 PHP-FPM,Nginx,FastCGI 之間的關(guān)系 FastCGI 是一個(gè)協(xié)...

    sumory 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<