溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用Nginx解決前端跨域問題

發(fā)布時間:2021-02-10 11:57:19 來源:億速云 閱讀:255 作者:小新 欄目:服務(wù)器

這篇文章主要介紹了怎么用Nginx解決前端跨域問題,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

前言

在開發(fā)靜態(tài)頁面時,類似Vue的應(yīng)用,我們常會調(diào)用一些接口,這些接口極可能是跨域,然后瀏覽器就會報cross-origin問題不給調(diào)。

最簡單的解決方法,就是把瀏覽器設(shè)為忽略安全問題,設(shè)置--disable-web-security。不過這種方式開發(fā)PC頁面到還好,如果是移動端頁面就不行了。

解決辦法

使用Nginx轉(zhuǎn)發(fā)請求。把跨域的接口寫成調(diào)本域的接口,然后將這些接口轉(zhuǎn)發(fā)到真正的請求地址。

舉個栗子

例如我們在開發(fā)一個Vue應(yīng)用。

原先:

調(diào)試頁面是: http://192.168.1.100:8080/

請求的接口是: http://ni.hao.sao/api/get/info

步驟一:

請求的接口是: http://192.168.1.100:8080/api/get/info

PS:這樣就解決了跨域問題。

步驟二:

安裝好Nginx后,去到/usr/local/etc/nginx/目錄(這是Mac的),修改nginx.conf文件。

步驟三:

把默認(rèn)的server配置注釋掉。

在下面增加:

  server{
    listen 8888;
    server_name 192.168.1.100;
 
    location /{
      proxy_pass http://192.168.1.100:8080;
    }
 
    location /api{
      proxy_pass http://ni.hao.sao/api;
    }
  }

保存后,啟動Nginx。

PS:并不需要太了解Nginx的配置,很簡單的。

步驟四:

訪問: http://192.168.1.100:8888/

搞定。

PS:注意訪問的端口是‘8888',有其他域的地址繼續(xù)加location就行了。

錯誤示范

我一開始不太懂Nginx的配置,以為可以如下配置。

  server{
    listen 8080;
    server_name 192.168.1.100;
 
    location /api{
      proxy_pass http://ni.hao.sao/api;
    }
  }

之所以這么寫,是我認(rèn)為這樣可以讓Nginx幫我監(jiān)聽8080的請求,然后只轉(zhuǎn)發(fā)匹配的請求。我沒有意識到的是Nginx這么寫后,是需要占用8080端口的。

既然需要占用端口,那也就不能再被其他相同協(xié)議的進(jìn)程占用,就導(dǎo)致開發(fā)的頁面無法以8080端口啟用。經(jīng)同事提點(diǎn),才想起這事情,換下思路,就有了最上面的方法。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么用Nginx解決前端跨域問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI