什么是代理院崇?
現(xiàn)實(shí)生活中,有許多事自己無(wú)法辦或者做起來(lái)很費(fèi)勁袍祖,這時(shí)便想到了找人幫忙底瓣,即代理人。海外代購(gòu)就是個(gè)很好的例子蕉陋,代購(gòu)者幫客戶購(gòu)買(mǎi)商品濒持,成為客戶與商家之間的媒介。計(jì)算機(jī)世界也是如此寺滚,代理proxy是一種常見(jiàn)的工具柑营。代理分為正向代理和反向代理。
正向代理
web服務(wù)通常的模式是client-server村视,即client端發(fā)送request官套,經(jīng)Intenet到達(dá)server端,server端處理請(qǐng)求蚁孔,返回response至client端奶赔。正向代理是基于client端而言,參見(jiàn)下圖:
上圖描繪了正向代理的情形杠氢。代理拿到client端的請(qǐng)求站刑,代替User訪問(wèn)相應(yīng)的網(wǎng)站或服務(wù)器。簡(jiǎn)而言之鼻百,正向代理是client端的代理绞旅,作為client端至intenet中間的媒介。還是海外代購(gòu)的例子温艇,買(mǎi)家為client端因悲,商家為server端,代購(gòu)者就是正向代理勺爱。圖中的User可以有很多晃琳,proxy可以代理一群User。
反向代理
反向代理是基于服務(wù)器端的琐鲁。提到反向代理卫旱,就不得不說(shuō)大名鼎鼎的Nginx,一個(gè)很有名的反向代理服務(wù)器围段,這個(gè)下一節(jié)會(huì)講到顾翼。反向代理的示意圖如下:
client端的請(qǐng)求過(guò)來(lái),由反向代理服務(wù)器處理蒜撮,再分發(fā)給實(shí)際的服務(wù)器處理請(qǐng)求暴构。這樣做至少有兩個(gè)好處跪呈,一個(gè)是安全,避免暴露真實(shí)的服務(wù)器在外面取逾,另一個(gè)是可以實(shí)現(xiàn)負(fù)載均衡耗绿,當(dāng)請(qǐng)求數(shù)以億記時(shí),可以按服務(wù)器集群的負(fù)載情發(fā)送請(qǐng)求砾隅,不至于阻塞误阻。打個(gè)比方,淘寶某個(gè)店有多個(gè)客服人員晴埂,當(dāng)很多買(mǎi)家同時(shí)需要詢問(wèn)時(shí)究反,需要一個(gè)系統(tǒng)將詢問(wèn)發(fā)送至空閑的客服人員那邊∪迓澹客服人員比作真實(shí)服務(wù)器精耐,那個(gè)分發(fā)消息的系統(tǒng)就可以看作反向代理服務(wù)器。
nginx的端口代理轉(zhuǎn)發(fā)
真實(shí)場(chǎng)景:我有一個(gè)騰訊云服務(wù)器琅锻,騰訊云是有安全組的卦停,限制端口的訪問(wèn)。現(xiàn)在我放開(kāi)了某個(gè)端口恼蓬,比如3389惊完,服務(wù)器上有兩個(gè)flask進(jìn)程,分別監(jiān)聽(tīng)3001和3002端口处硬。那么我需要用nginx實(shí)現(xiàn)訪問(wèn)3389端口時(shí)小槐,nginx能根據(jù)path轉(zhuǎn)發(fā)到相應(yīng)的端口,如:輸入http://x.x.x.x:3389/alice時(shí)轉(zhuǎn)到http://x.x.x.x:3001/alice荷辕,輸入http://x.x.x.x:3389/bob時(shí)轉(zhuǎn)到http://x.x.x.x:3002/bob凿跳。
解決方法:利用nginx的端口轉(zhuǎn)發(fā)功能。
- 輸入命令 nginx -t桐腌,這是一個(gè)判斷nginx配置文件格式是否正確的命令拄显,可以用來(lái)查找nginx配置文件的路徑苟径;
- 輸入命令 vim /etc/nginx/nginx.conf案站,編輯以下配置信息。服務(wù)器監(jiān)聽(tīng)3389端口棘街,依據(jù)location的不同蟆盐,映射到不同的端口;
server{
listen 3389;
server_name locahost;
location /alice {
proxy_pass http://127.0.0.1:3001;
}
location /bob {
proxy_pass http://127.0.0.1:3002;
}
- 輸入命令 nginx -t遭殉,驗(yàn)證配置文件格式正確石挂;
- 輸入命令 nginx -s reload,使配置改動(dòng)生效险污。
至此痹愚,一個(gè)簡(jiǎn)單的端口轉(zhuǎn)發(fā)就實(shí)現(xiàn)了富岳。
nginx小白,望高手指點(diǎn)拯腮。轉(zhuǎn)載請(qǐng)注明窖式,謝謝。