Nginx 反向代理實現(xiàn)請求

跨域請求

Cross Origin Policy 是在瀏覽器實現(xiàn)的一個規(guī)則。這個規(guī)則規(guī)定不同源下的代碼不可以訪問比起的資源(包括網(wǎng)絡(luò)請求侄泽,靜態(tài)文件和本地緩存等)。對于是否同源的界定是:協(xié)議(http/https)孝凌,域名和端口误债。三個之中任意一個不同都不能算做同源。同源限制是瀏覽器為了保證數(shù)據(jù)安全而實現(xiàn)的規(guī)則迄埃。試想一下不同源的網(wǎng)站可以隨意的訪問彼此的數(shù)據(jù)疗韵,就毫無隱私安全可言了。

實現(xiàn)跨域請求

  1. Jsonp: 利用JS標簽可以進行跨域請求的特性侄非,將跨域請求的鏈接賦值給script標簽的src屬性蕉汪,同時在URL末尾添加callback函數(shù)。當跨域請求完整之后逞怨,跨域的服務(wù)器會把JSON字符串包裹在回調(diào)函數(shù)中者疤,即callback({...}),然后返回到前端叠赦,瀏覽器收到之后會嘗試將其轉(zhuǎn)化成JavaScript執(zhí)行驹马。所以你只需要在全局中定義callback函數(shù)就可以接受數(shù)據(jù)了。
    缺點:只支持get請求除秀。需要后端的支持(返回函數(shù)的包裹等)糯累。代碼比較混亂。

  2. postMessage:主要用來支持前端不同頁面(不同源)之間的信息交互鳞仙。

  3. CORS(Cross-Origin Resource Sharing): 跨域資源共享寇蚊。這是比較標準的跨域解決方案。CORS允許跨域請求的前提是棍好,當前域被目標域認可了(Access-Control-Allow-Origin)仗岸。如果當前域被目前域所認可允耿,瀏覽器就會允許當前域讀取返回的數(shù)據(jù)。
    注意:無論當前域有沒有被認可扒怖,請求(Get和Option)是一定會被發(fā)出的空入,也一定會接受到response沙兰,只是不能讀取而已。

  4. Nginx反向代理

Nginx反向代理實現(xiàn)跨域

反向代理

反向代理服務(wù)器的任務(wù)就是把接受到的請求再分派到其他的服務(wù)器中處理,處理完畢后再將結(jié)果返回窗悯,請求的一方并不知道最終是哪個服務(wù)器處理了自己的請求羽历。反向代理一般被用來分流均衡讲弄。

實現(xiàn)跨域

跨域最主要的問題就是瀏覽器對來自不同源的response進行阻隔扎拣。那么你只要讓瀏覽器相信請求的鏈接和當前域是同源的話,就可以解決跨域問題了稽鞭。

所以我們可以給前端App添加Nginx配置鸟整,然后劃分一個特定的子域名,例如/external_api/朦蕴,用來專門接受對外服務(wù)的請求篮条,然后使用proxy_pass將請求分發(fā)給外部的服務(wù)器,外部服務(wù)器處理完后將結(jié)果返回吩抓,Nginx在將結(jié)果當成自己處理的進行返回就可以了涉茧。所以這實際上也是繞開了同源規(guī)則的限制。

方法一: 為前端配置Nginx

這種方法是為前端應(yīng)用配置Nginx疹娶,使得對前端的訪問都先經(jīng)過Nginx的處理和轉(zhuǎn)發(fā)伴栓。這種方法有一個小缺點就是這個匹配對外請求的路徑/external_api/會占用前端的路徑。

Nginx配置:

server { 
        location / { 
            # 正常匹配前端應(yīng)用的頁面資源蚓胸。
            root   /html; 
            index  index.html index.htm; 
        } 
        //自定義本地路徑 
        location /external_api { 
            rewrite  ^.+external_api/?(.*)$ /$1 break;  # 刪除自定義的前綴挣饥。
            include  uwsgi_params;                            # 包含參數(shù)除师。
            proxy_pass   http://www.target.com;         # 分發(fā)到目標服務(wù)器沛膳。
       } 
} 
方法二: 創(chuàng)建一個新的Nginx服務(wù)器

這種方法和上面一種的區(qū)別在于:Nginx和前端App是分開存在的。Nginx在匹配到 location / 的時候汛聚,會把請求轉(zhuǎn)發(fā)到前端app锹安,而不是指向本地路徑。
Nginx配置:

server { 
        location / { 
            # 轉(zhuǎn)發(fā)到前端倚舀。
            proxy_pass   http://www.front-end.com;
        } 
        //自定義本地路徑 
        location /external_api { 
            rewrite  ^.+external_api/?(.*)$ /$1 break;  # 刪除自定義的前綴叹哭。
            include  uwsgi_params;                            # 包含參數(shù)。
            proxy_pass   http://www.target.com;         # 分發(fā)到目標服務(wù)器痕貌。
       } 
} 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末风罩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子舵稠,更是在濱河造成了極大的恐慌超升,老刑警劉巖入宦,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異室琢,居然都是意外死亡乾闰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門盈滴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涯肩,“玉大人,你說我怎么就攤上這事巢钓〔∶纾” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵症汹,是天一觀的道長铅乡。 經(jīng)常有香客問我,道長烈菌,這世上最難降的妖魔是什么阵幸? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮芽世,結(jié)果婚禮上挚赊,老公的妹妹穿的比我還像新娘。我一直安慰自己济瓢,他們只是感情好荠割,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旺矾,像睡著了一般蔑鹦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箕宙,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天嚎朽,我揣著相機與錄音,去河邊找鬼柬帕。 笑死哟忍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的陷寝。 我是一名探鬼主播锅很,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凤跑!你這毒婦竟也來了爆安?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤仔引,失蹤者是張志新(化名)和其女友劉穎扔仓,沒想到半個月后致扯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡当辐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年抖僵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缘揪。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡耍群,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出找筝,到底是詐尸還是另有隱情蹈垢,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布袖裕,位于F島的核電站曹抬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏急鳄。R本人自食惡果不足惜谤民,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疾宏。 院中可真熱鬧张足,春花似錦、人聲如沸坎藐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岩馍。三九已至碉咆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛀恩,已是汗流浹背疫铜。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赦肋,地道東北人块攒。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓励稳,卻偏偏與公主長得像佃乘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驹尼,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361