這篇文章給大家分享的是有關(guān)怎么利用Nginx反向代理解決跨域問(wèn)題的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
問(wèn)題
在之前的分享的跨域資源共享的文章中,有提到要注意跨域時(shí),如果要發(fā)送Cookie,Access-Control-Allow-Origin就不能設(shè)為*,必須指定明確的、與請(qǐng)求網(wǎng)頁(yè)一致的域名。在此次項(xiàng)目開(kāi)發(fā)中與他人協(xié)作中就遇到此類問(wèn)題。
解決思路
一般來(lái)說(shuō),與后臺(tái)利用CORS跨域資源共享將Access-Control-Allow-Origin設(shè)置為訪問(wèn)的域名即可,這個(gè)需要后臺(tái)的配合,且有些瀏覽器是不支持的。
基于與合作方后臺(tái)的配合,利用nginx方向代理來(lái)滿足瀏覽器的同源策略來(lái)實(shí)現(xiàn)跨域
實(shí)現(xiàn)方法
反向代理概念
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受Internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器;并將從服務(wù)器上得到的結(jié)果返回給Internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器。反向代理服務(wù)器對(duì)于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置??蛻舳讼蚍聪虼淼拿臻g(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容原本就是它自己的一樣。
利用nginx反向代理實(shí)現(xiàn)跨域的步驟
去nginx官網(wǎng)下載包搭建nginx環(huán)境
修改nginx的配置文件,找到ngixn.conf文件,修改相關(guān)配置
http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 8000; #監(jiān)聽(tīng)8000端口,可以改成其他端口 server_name localhost; # 當(dāng)前服務(wù)的域名 location /wili/api/ { proxy_pass http://chick.platform.deva.wili.us/api/; #添加訪問(wèn)路徑錄為/will/api的代理配置 proxy_http_version 1.1; } location / { proxy_pass http://localhost:8001; proxy_http_version 1.1; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
配置的解釋:
由配置信息可知,我們讓nginx監(jiān)聽(tīng)localhost的8000端口,網(wǎng)站A與網(wǎng)站B的訪問(wèn)都是經(jīng)過(guò)localhost的8000端口進(jìn)行訪問(wèn)。
我們特殊配置了一個(gè)"/will/api"的訪問(wèn),使以"will/api”開(kāi)頭的地址都轉(zhuǎn)到"http://chick.platform.deva.wili.us/api/"進(jìn)行處理。
訪問(wèn)地址修改
既然我們已經(jīng)配置了nginx,那么所有的訪問(wèn)都要走nginx,而不是走網(wǎng)站原本的地址(A網(wǎng)站localhost:8001,B網(wǎng)站http://chick.platform.deva.wili.us/api/)。所以要修改A網(wǎng)站中的請(qǐng)求接口換成http://localhost:8000/wili/api/。接下來(lái)啟動(dòng)nginx,訪問(wèn)配置的8000即可
需要注意的一點(diǎn)是nginx啟動(dòng)可能會(huì)沖突端口造成啟動(dòng)不成功,可在任務(wù)管理器查看是否啟動(dòng)成功。
總結(jié)
瀏覽器跨域的解決方式有很多種:
jsonp 需要目標(biāo)服務(wù)器配合一個(gè)callback函數(shù)
CORS需要服務(wù)器設(shè)置header:Access-Control-Allow-Origin
nginx反向代理 這個(gè)方法一般很少有人提及,但是他可以不用目標(biāo)服務(wù)器配合,不過(guò)需要你搭建一個(gè)中轉(zhuǎn)nginx服務(wù)器,用于轉(zhuǎn)發(fā)請(qǐng)求。(使用反向代理可能訪問(wèn)網(wǎng)頁(yè)相對(duì)于之前響應(yīng)會(huì)比較慢)
感謝各位的閱讀!關(guān)于“怎么利用Nginx反向代理解決跨域問(wèn)題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
當(dāng)前題目:怎么利用Nginx反向代理解決跨域問(wèn)題-創(chuàng)新互聯(lián)
文章分享:http://jinyejixie.com/article18/dshggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、建站公司、微信公眾號(hào)、網(wǎng)站策劃、定制開(kāi)發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容