首頁  >  文章  >  運維  >  如何利用Nginx反向代理解決跨域問題

如何利用Nginx反向代理解決跨域問題

PHPz
PHPz轉載
2023-05-31 10:20:307008瀏覽

問題

在先前的分享的跨域資源共享的文章中,有提到要注意跨域時,如果要發送cookie,access-control- allow-origin就不能設為*,必須指定明確的、與請求網頁一致的網域名稱。在此次專案開發中與他人協作中就遇到此類問題。

如何利用Nginx反向代理解決跨域問題

解決想法

  1. #一般來說,與後台利用cors跨域資源共享將access- control-allow-origin設定為訪問的網域即可,這個需要後台的配合,而且有些瀏覽器是不支援的。

  2. 基於與合作方後台的配合,利用nginx方向代理來滿足瀏覽器的同源策略來實現跨域

# #實作方法

反向代理程式概念

#反向代理程式(reverse proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉送給內部網路上的伺服器;並將從伺服器上得到的結果傳回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。反向代理伺服器對於客戶端而言它就像是原始伺服器,並且客戶端不需要進行任何特別的設定。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容傳回給客戶端,就像這些內容原本就是它自己的一樣。

利用nginx反向代理實現跨域的步驟

#去下載套件建立nginx環境


如何利用Nginx反向代理解決跨域問題

修改nginx的設定文件,找到ngixn.conf文件,修改相關配置


http {
 include  mime.types;
 default_type application/octet-stream;

 sendfile  on;

 server {
  listen  8000; #监听8000端口,可以改成其他端口
  server_name localhost; # 当前服务的域名

  location /wili/api/ {
    proxy_pass http://chick.platform.deva.wili.us/api/; #添加访问路径录为/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監聽localhost的8000端口,網站a與網站b的訪問都是經過localhost的8000端口進行訪問。
  • 我們特殊配置了一個"/will/api"的訪問,使以"will/api」開頭的位址都轉到""進行處理。
  • 存取位址修改
  • 既然我們已經設定了nginx,那麼所有的存取都要走nginx,而不是走網站原本的位址(a網站localhost:8001,b網站)。所以要修改a網站中的請求介面換成。接下來啟動nginx,存取配置的8000即可


如何利用Nginx反向代理解決跨域問題
#需要注意的一點是nginx啟動可能會衝突連接埠造成啟動不成功,可在任務管理器查看是否啟動成功。

以上是如何利用Nginx反向代理解決跨域問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除