ホームページ >運用・保守 >Nginx >nginxのクロスドメイン問題を解決する方法

nginxのクロスドメイン問題を解決する方法

WBOY
WBOY転載
2023-05-13 23:43:045395ブラウズ

フロントエンドとバックエンドを分離し、nginx を使用してクロスドメインの問題を解決する

フロントエンド: vue.js nodejs webpack

バックエンド: springboot

リバース プロキシ サーバー: nginx

アイデア: フロントエンド コードをパッケージ化し、nginx が静的リソースを指すようにし、nginx がバックグラウンド リクエストを転送します。

1. フロントエンド コードをパッケージ化します:

npm run build

により dist フォルダーが生成されます。 Index.html ファイルと静的フォルダーが含まれています。例としてローカル パスを取り上げます:

/users/xxx/ideaprojects/webtest/dist

2。 を開きます。 /usr/local/etc/nginx ディレクトリの

nginx.conf に次の内容をサーバーに追加します:

listen  80; #原为8080,避免冲突,更改为80

  server_name localhost;

 

  #charset koi8-r;

 

  #access_log logs/host.access.log main;

 

 

  location / {

   root /users/xxx/ideaprojects/webtest/dist;

   index index.html;

    

   # 此处用于处理 vue、angular、react 使用h5 的 history时 重写的问题

   if (!-e $request_filename) {

    rewrite ^(.*) /index.html last;

    break;

   }

  }

 

 

  # 代理服务端接口

  location /api/ {

   proxy_pass http://localhost:8080/;# 代理接口地址

  }

Test

フロント エンドリクエストを送信します: http://localhost/test、vue-router はそれを http://localhost/api/demo/1 にリダイレクトし、実際のアクセスは http://localhost:8080/demo/1 です。

リクエストをバックグラウンドに直接送信します。 http://localhost/api/demo/1 にアクセスします。実際のアクセスは http://localhost:8080/demo/1

思考コンテンツの拡張について:

1).
# プロキシ サーバー インターフェイス

location /api/ {
proxy_pass http://localhost:8080/;# 代理接口地址
}

プロキシ インターフェイスのアドレスは 8080 にのみ達し、その後、その名前が自動的に追加されます。バックグラウンドプロジェクト? ? ?たとえば、インターフェイスは http://148.70.110.87:8080/プロジェクト名/メソッド名です。 。 。

2).js は次のようにリクエストされます。nginx は上記に従って設定されていますが、リクエスト エラーは http://148.70.110.87/api/index2 404 (not found)

axios.post('/api/index2')
.then( (response) =>{
console.log(response);
})
.catch( (error)=> {
console.log(error);
});
## です。 # 3). 3 番目のステップはテストです。本当に理解できません。関連するコードがあれば幸いです。

以上がnginxのクロスドメイン問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。