Nginx反向代理配置

歡迎訪問我的博客,同步更新: 楓山別院

1进肯、代理和代理服務(wù)器

什么是代理呢激蹲,代理其實(shí)就是一個(gè)中介,可以舉一個(gè)生活中的例子江掩。很早以前学辱,我們要買一件衣服,可能需要去衣店环形;買一雙鞋子要去一個(gè)鞋店策泣;買書去書店。然后抬吟,網(wǎng)上商城誕生了萨咕,我們買衣服,買鞋火本,買書危队,都可以在網(wǎng)上商城買。商城去采購的衣服鞋子和書钙畔,然后賣給了我們茫陆,商城相當(dāng)于一個(gè)中介。代理服務(wù)器就是商城的角色擎析,以前我們可能需要訪問這個(gè)服務(wù)簿盅,那個(gè)服務(wù),現(xiàn)在我們?cè)L問代理服務(wù)器就能拿到這些服務(wù)數(shù)據(jù)叔锐,因?yàn)榇矸?wù)器去拿了這些數(shù)據(jù)轉(zhuǎn)發(fā)給了我們挪鹏。

2、正向代理與反向代理的區(qū)別

要弄明白正向還是反向愉烙,首先要弄清楚自己當(dāng)前的定位或者說場景

  • 正向代理的常見場景


    Image 1.png

    如果現(xiàn)在我是一個(gè)局域網(wǎng)中的用戶讨盒,我想訪問互聯(lián)網(wǎng)上的資源,通常為了局域網(wǎng)安全性和上網(wǎng)管理步责,我們可以通過代理服務(wù)器來上網(wǎng)返顺。那么我對(duì)自己的定位就是我是獲取資源的,代理服務(wù)器就是正向代理服務(wù)器蔓肯。正向代理服務(wù)器不支持外部訪問內(nèi)部僵刮。簡單說摔踱,我們的角色是客戶端戳气,目的是訪問外部資源甫题,正向代理服務(wù)器是讓局域網(wǎng)用戶接入外網(wǎng)的站點(diǎn)。

  • 反向代理的常見場景


    Image 2.png

    如果我現(xiàn)在是一個(gè)服務(wù)器,我對(duì)互聯(lián)網(wǎng)上的用戶提供服務(wù)舟陆,通常我們可以通過代理服務(wù)器來我這里拿到資源之后误澳,轉(zhuǎn)發(fā)給互聯(lián)網(wǎng)的用戶。那么我對(duì)自己的定位就是秦躯,我是提供資源的忆谓,代理服務(wù)器就是反向代理服務(wù)器。簡單說踱承,我們的角色是站點(diǎn)倡缠,目的是為外網(wǎng)用戶提供服務(wù),反向代理服務(wù)器將外網(wǎng)的用戶接入到局域網(wǎng)的站點(diǎn)茎活。

3昙沦、反向代理的簡單配置

首先,先上一段配置妙色,后面一一講解

server{
        listen 80;
        server_name 10.0.88.188;
        
        location /mgmt {
            proxy_pass http://172.16.7.20:8081;
        }
        
        location /center {
            proxy_pass http://172.16.7.20:8080;
        }
        
        location / {
            proxy_pass http://172.16.7.20:8082;
        }
        
    }
  • server

第一個(gè)是server{}塊桅滋,這個(gè)是放在http{}塊中的慧耍,用于指定一組代理規(guī)則身辨,http{}塊中可以有多個(gè)server{}塊。

  • listen

listen 命令是配置監(jiān)聽的端口芍碧,例如80

  • server_name

server_name 配置的是IP地址或者是域名

  • location

location 命令配置的是攔截的路徑煌珊,例如配置了/mgmt,如果訪問http://10.0.88.188/mgmt或者http://10.0.88.188/mgmt/xxxxx泌豆,就會(huì)匹配到這條規(guī)則定庵,然后就會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到proxy_pass指定的服務(wù)器上。location一般可以配置為一組服務(wù)中公有的一個(gè)路徑踪危,例如配置項(xiàng)目名稱蔬浙,這樣就可以代理到項(xiàng)目的所有服務(wù)。如果有下面一段配置

location /center {
            proxy_pass http://172.16.7.20:8080;
        }
        
location /center/a {
            proxy_pass http://172.16.7.20:8081;
        }

這種情況下贞远,如果訪問http://10.0.88.188/center/a畴博,nginx會(huì)找到匹配度最高的一個(gè)來轉(zhuǎn)發(fā),即/center/a

  • proxy_pass

proxy_pass 命令配置的是目的服務(wù)器蓝仲,被攔截的請(qǐng)求會(huì)轉(zhuǎn)發(fā)到該服務(wù)器上俱病。這個(gè)地方有故事了,如果這個(gè)地方配置的URL包含URI("/")的話袱结,location 后面配置的路徑會(huì)被替換亮隙。

舉個(gè)例子

location /center {
            #配置1    proxy_pass http://172.16.7.20:8080;
            #配置2    proxy_pass http://172.16.7.20:8080/;
            #配置3    proxy_pass http://172.16.7.20:8080/xxx;
        }

配置1的URL后面有沒有/,那么最終轉(zhuǎn)發(fā)的地址是http://172.16.7.20:8080/center

配置2的URL后面有/垢夹,也就是包含URI溢吻,那么location配置的路徑會(huì)被替換,最終轉(zhuǎn)發(fā)的地址是http://172.16.7.20:8080/

配置3其實(shí)跟配置2是一樣的果元,最終轉(zhuǎn)發(fā)的地址是http://172.16.7.20:8080/xxx

Tips

通過配置反向代理促王,可以解決JS跨域問題掩完。

舉例:
js本地是http://10.0.0.8,現(xiàn)在需要js需要去http://10.0.0.9/center/order上拿數(shù)據(jù)硼砰,這就會(huì)跨域且蓬,可以使用nginx將跨域的服務(wù)轉(zhuǎn)化成本地的服務(wù),如下:

server{
        listen 80;
        server_name 10.0.0.8;
        location /center {
                proxy_pass http://10.0.0.9;
                }
        }

現(xiàn)在訪問http://10.0.0.8/center/order即可题翰,這就不會(huì)跨域了恶阴。

4、負(fù)載均衡

有時(shí)候豹障,我們的服務(wù)并不是一個(gè)單點(diǎn)的服務(wù)冯事,而是一個(gè)多節(jié)點(diǎn)的,這個(gè)時(shí)候應(yīng)該怎么配置呢血公,OK昵仅,定義一個(gè)服務(wù)器組,名字是backend:

upstream backend{
    server 10.0.6.6:8080;
    server 10.0.6.7:8080;
    server 10.0.6.8:8080;
}

upstream命令是放在http{}塊中的累魔,可以配置多個(gè)摔笤,它定義了一組相同的服務(wù),默認(rèn)是輪訓(xùn)訪問的垦写,也就是說默認(rèn)的權(quán)重(weight)都是1吕世。然后用這個(gè)組替換proxy_pass原來的地址,比如:

proxy_pass http://backend;

這個(gè)時(shí)候梯投,請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到一個(gè)服務(wù)組命辖。
我們也可以自己設(shè)置想要的權(quán)重,比如說分蓖,性能好一點(diǎn)的服務(wù)器尔艇,多處理一些請(qǐng)求,配置如下:

upstream backend{
    server 10.0.6.6:8080 weight=5;
    server 10.0.6.7:8080 weight=2;
    server 10.0.6.8:8080 weight=1;
}

這個(gè)時(shí)候么鹤,6.6的服務(wù)器會(huì)分到大約八分之五的請(qǐng)求终娃,6.7大約是四分之一,6.8大約是八分之一午磁。

今日強(qiáng)心劑

成功來源于不斷的嘗試

轉(zhuǎn)載請(qǐng)注明出處尝抖,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迅皇,一起剝皮案震驚了整個(gè)濱河市昧辽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌登颓,老刑警劉巖搅荞,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡咕痛,警方通過查閱死者的電腦和手機(jī)痢甘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茉贡,“玉大人塞栅,你說我怎么就攤上這事∏簧ィ” “怎么了放椰?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愉粤。 經(jīng)常有香客問我砾医,道長,這世上最難降的妖魔是什么衣厘? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任如蚜,我火速辦了婚禮,結(jié)果婚禮上影暴,老公的妹妹穿的比我還像新娘错邦。我一直安慰自己,他們只是感情好坤检,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布兴猩。 她就那樣靜靜地躺著,像睡著了一般早歇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讨勤,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天箭跳,我揣著相機(jī)與錄音,去河邊找鬼潭千。 笑死谱姓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刨晴。 我是一名探鬼主播屉来,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼狈癞!你這毒婦竟也來了茄靠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤蝶桶,失蹤者是張志新(化名)和其女友劉穎慨绳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脐雪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年厌小,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片战秋。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡璧亚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脂信,到底是詐尸還是另有隱情涨岁,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布吉嚣,位于F島的核電站梢薪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏尝哆。R本人自食惡果不足惜秉撇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秋泄。 院中可真熱鬧琐馆,春花似錦、人聲如沸恒序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歧胁。三九已至滋饲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喊巍,已是汗流浹背屠缭。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崭参,地道東北人呵曹。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像何暮,于是被迫代替她去往敵國和親奄喂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354