クロスドメインの問題を解決するためのNginxの実用的な方法

クロスドメインの問題を解決するためのNginxの実用的な方法

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

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

舞台裏: SpringBoot

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

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

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

npm 実行ビルド

dist フォルダーが生成されます。 index.html ファイルと静的フォルダーが含まれています。パスは、例としてローカルの場所に基づいています。

/ユーザー/xxx/ideaProjects/webtest/dist

2. 開く

/usr/local/etc/nginx ディレクトリの nginx.conf ファイルに、サーバーに次の内容を追加します。

listen 80; #元の8080、競合を避けるため80に変更

  server_name ローカルホスト;

 

  #文字セット koi8-r;

 

  #access_log ログ/host.access.log メイン;

 

 

  位置 / {

   ルート /Users/xxx/ideaProjects/webtest/dist;

   インデックス index.html;

    

   # これは、Vue、Angular、React が H5 の履歴を使用するときに書き換えの問題を処理するために使用されます。if (!-e $request_filename) {

    最後に ^(.*) /index.html を書き換えます。

    壊す;

   }

  }

 

 

  #プロキシサーバーインターフェースの場所 /api/ {

   proxy_pass http://localhost:8080/;# プロキシインターフェースアドレス}

テスト

フロントエンドはリクエスト 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)。
# プロキシサーバーインターフェース

場所 /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( (レスポンス) => {
console.log(応答);
})
.catch( (エラー)=> {
コンソール.log(エラー);
});

3). 3 番目のステップであるテストがよくわかりません。関連するコードを提供していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx 構成 クロスドメイン リクエスト Access-Control-Allow-Origin * 詳細な説明
  • Nginx を使用してクロスドメイン Vue 開発環境を処理する方法
  • 無効な Nginx クロスドメイン設定 Access-Control-Allow-Origin の解決策
  • Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明
  • Nginx を使用してフロントエンドのクロスドメイン問題を解決する方法
  • nginx/apache 静的リソースのクロスドメインアクセスの問題を解決する詳細な説明

<<:  今日と昨日の 0:00 タイムスタンプを取得する MySQL の例

>>:  Vuexの役割についての深い理解

推薦する

jsonファイルの書き方の詳細説明

目次JSONとはなぜこの技術なのでしょうか? JSONの使い方- データ形式- メモ- JSには2つ...

VueはBaidu Mapsを使用して都市の位置特定を実現

この記事では、参考までに、Baidu Mapsを使用して都市の位置特定を実現するVueの具体的なコー...

NavicatがLinuxサーバー上のMySQLに接続できない問題を解決する

最初は悲しい気持ちになりました。スクリーンショットは以下の通りです。 少し苦労しましたが、解決策は次...

固定ボトムコンポーネントを実装した Vue の例

目次【効果】 【実施方法】 【効果】 【実施方法】 <テンプレート> <div i...

MySQL トランザクション分析

取引トランザクションはビジネス ロジックの基本単位です。各トランザクションは一連の SQL ステート...

Dockerを使用してAngularプロジェクトをデプロイする方法

Docker を使用して Angular プロジェクトをデプロイする方法は 2 つあります。1 つは...

CSS で実装された円形のプログレスバー

成果を達成する 実装コードhtml <div class="wrap"&g...

Kubernetes オブジェクトボリュームの詳細な使用方法

概要ボリュームは、さまざまなストレージ リソースを抽象化および仮想化したものです。ストレージ リソー...

iPhone デバイスの WAP ページでフォントサイズが大きい問題の解決策

JavaScriptコントロールを使用したくない場合は、次の方法を試してください。 Safariブラ...

Windows サーバー ファイルをローカルにバックアップする方法、Windows サーバー データ バックアップ ソリューション

重要なデータはバックアップする必要があり、リアルタイムでバックアップする必要があります。そうしないと...

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

jsを使用してシンプルなカルーセル効果を実現する

この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

React Nativeのカスタムルーティング管理に関する深い理解

目次1. カスタムルーティング2. タブナビゲーション3. データの返却要約する1. カスタムルーテ...