20170731

問(wèn)題描述

  • 1.項(xiàng)目中需要使用nginx作為反向代理服務(wù)器趣效,代理一些靜態(tài)文件(比如:使用webpack打包好的html頁(yè)面曹抬,和圖片等等)以及BFF層的服務(wù)。
  • 2.因此項(xiàng)目中想通過(guò)映射的方式神得,將nginx的配置文件以及靜態(tài)資源映射進(jìn)容器频轿。
  • 3.但是卻出現(xiàn)前端發(fā)的請(qǐng)求BFF無(wú)論如都接受不到

解決過(guò)程

  • Q1:首先我考慮到的必然是路徑寫(xiě)錯(cuò)了
  • A1:去檢查前端發(fā)送的請(qǐng)求路徑,前端路徑的寫(xiě)法http://node_service:3000/api由于BFF服務(wù)啟動(dòng)在node_service容器中因此痊银,我認(rèn)為這個(gè)路徑?jīng)]有問(wèn)題抵蚊。然后檢查ngixn的配置
server {
    sendfile off;
    listen       80;
    charset utf-8,gbk;

    location /api {
        proxy_pass http://node_service:3000;
        rewrite /api/(.+)$ /$1 break;
    }

但是由于我對(duì)ngixn不太熟悉,配置也不太能看懂溯革,大概猜測(cè)贞绳,匹配/api請(qǐng)求的都交給location去做proxy_pass轉(zhuǎn)發(fā)請(qǐng)求,然后改寫(xiě)路由致稀「员眨看著配置中轉(zhuǎn)發(fā)的路由也沒(méi)什么問(wèn)題。然而只能在chrom的network中看到我的http://node_service:3000/api/user一直404抖单。


  • Q2:那么是不是ngixn的配置有問(wèn)題萎攒?造成proxy_pass沒(méi)有轉(zhuǎn)發(fā)請(qǐng)求?那么就有兩個(gè)點(diǎn)矛绘,首先location是否接受請(qǐng)求耍休?然后如果接受了,那么為什么不轉(zhuǎn)發(fā)货矮?
  • A2:但是由于ngixn的反向代理羊精,我只能在chrom上看到前端的請(qǐng)求路徑http://node_service:3000/api/user卻沒(méi)有辦法看到請(qǐng)求是否被轉(zhuǎn)發(fā)以及轉(zhuǎn)發(fā)到哪里了,因此我不論我如何修改proxy_pass后的值囚玫,都沒(méi)有辦法受到資源园匹。

  • Q3:為了驗(yàn)證配置是否正確雳刺,需要查找了ngixn語(yǔ)法
  • A3:首先proxy_pass是用來(lái)做反向代理轉(zhuǎn)發(fā)進(jìn)入location的請(qǐng)求的其次rewite用來(lái)改寫(xiě)url,
    rewirte <匹配規(guī)則> <改寫(xiě)規(guī)則> <break/.>第一個(gè)參數(shù)是正則表達(dá)式裸违,用來(lái)匹配url中的值掖桦,改寫(xiě)uri。然而rewrite會(huì)在改寫(xiě)之后吧url扔出去重新讓他匹配location供汛,因此break設(shè)置之后就不會(huì)重新匹配了枪汪。看來(lái)語(yǔ)法都沒(méi)有什么問(wèn)題怔昨。
    這里最難以解決的問(wèn)題是我不斷改變代理的路徑但是chrome只能看到從前端發(fā)來(lái)的請(qǐng)求路徑雀久,根本無(wú)法判斷之后又被轉(zhuǎn)發(fā)的哪里了。

  • Q4:那么是否能說(shuō)明請(qǐng)求沒(méi)有進(jìn)入過(guò)這個(gè)location趁舀?沒(méi)有辦法檢測(cè)現(xiàn)在只能對(duì)照一下原來(lái)work的代碼
  • A4:發(fā)現(xiàn)前端的請(qǐng)求路徑是個(gè)相對(duì)路徑而不是我寫(xiě)的帶有域名端口號(hào)的絕對(duì)路徑赖捌,我改寫(xiě)成為相對(duì)路徑成功

  • Q5:那么說(shuō)明請(qǐng)求確實(shí)沒(méi)有進(jìn)入這個(gè)location,那么這里的相對(duì)和絕對(duì)路徑有什么區(qū)別呢矮烹?
  • A5:改變了請(qǐng)求路徑之后越庇,發(fā)現(xiàn)chrom上的請(qǐng)求路徑立刻變成了http://localhost:9998/api/user,在觀察listen 80;說(shuō)明你發(fā)的絕對(duì)路徑請(qǐng)求ngixn并沒(méi)有提供給他

反思

  • 以前使用不論是superagent還是別的發(fā)請(qǐng)求的方式都是使用相對(duì)路徑奉狈,我都沒(méi)有懷疑和問(wèn)為什么÷卑Γ現(xiàn)在想著其實(shí)就是可以自動(dòng)向前綴中添加當(dāng)前的服務(wù)路徑
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仁期,隨后出現(xiàn)的幾起案子桑驱,更是在濱河造成了極大的恐慌,老刑警劉巖跛蛋,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熬的,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赊级,警方通過(guò)查閱死者的電腦和手機(jī)悦析,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)此衅,“玉大人强戴,你說(shuō)我怎么就攤上這事〉舶埃” “怎么了骑歹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)墨微。 經(jīng)常有香客問(wèn)我道媚,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任最域,我火速辦了婚禮谴分,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镀脂。我一直安慰自己牺蹄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布薄翅。 她就那樣靜靜地躺著沙兰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翘魄。 梳的紋絲不亂的頭發(fā)上鼎天,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音暑竟,去河邊找鬼斋射。 笑死,一個(gè)胖子當(dāng)著我的面吹牛但荤,可吹牛的內(nèi)容都是我干的罗岖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纱兑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呀闻!你這毒婦竟也來(lái)了化借?” 一聲冷哼從身側(cè)響起潜慎,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蓖康,沒(méi)想到半個(gè)月后铐炫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒜焊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年倒信,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泳梆。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳖悠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出优妙,到底是詐尸還是另有隱情乘综,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布套硼,位于F島的核電站卡辰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜九妈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一反砌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萌朱,春花似錦宴树、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至冒晰,卻和暖如春同衣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壶运。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工耐齐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蒋情。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓埠况,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親棵癣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辕翰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)狈谊,斷路器喜命,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,756評(píng)論 25 707
  • I/O模型Nginx介紹Nginx的安裝和目錄結(jié)構(gòu)Nginx的配置Nginx的編譯安裝 一、I/O模型 (一)I/...
    哈嘍別樣閱讀 890評(píng)論 0 4
  • 上一篇《WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理》河劝,我們講述了瀏覽器端請(qǐng)求發(fā)起過(guò)程壁榕,通過(guò)DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 80,942評(píng)論 21 356
  • 一赎瞎、關(guān)于“腦殘粉” 1牌里、“腦殘”只是一個(gè)結(jié)果。我們必須認(rèn)同腦殘對(duì)象(偶像)具有優(yōu)秀品質(zhì)务甥、經(jīng)歷了長(zhǎng)時(shí)間的考驗(yàn)牡辽,通過(guò)自...
    月小姐的花園閱讀 231評(píng)論 0 1