クロスドメインの問題を解決するための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の役割についての深い理解

推薦する

Vue ページ スタック マネージャーの詳細

目次2. 試した方法2.1 キープアライブ2.2 ネストされたルートを持つ CSS 3. 機能説明4...

CSS3は、変換変形とイベントを組み合わせて扇形のナビゲーションを完成させます。

この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本...

HTML は Double 11 クーポン取得を実装します (クーポン取得ページを開く時間を設定します)

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...

Vueはシンプルなマーキー効果を実装します

この記事では、Vueの具体的なコードを共有して、シンプルなマーキー効果を実現しています。具体的な内容...

xHTML タグと HTML タグの違いは何ですか?

すべてのタグは小文字でなければなりませんXHTML では、すべてのタグは小文字でなければなりません。...

プロジェクトの再構築からプロジェクトにおける CSS3 カスタム変数の使用について話す

CSS3変数について変数を宣言するときは、変数名の前に 2 つのハイフン ( -- ) を追加します...

Vueコンポーネントの7つの通信方法についての深い理解

目次1. props/$emit導入コードサンプル2.Vスロット導入コードサンプル3.$refs/ ...

Vue はシームレスなカルーセル効果を実現

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

secure_file_priv nullの問題を解決する

secure_file_priv = ' ';管理者としてcmdを実行します。 my...

CSSは5つの一般的な2D変換を実装します

CSS の 2D 変換を使用すると、移動、回転、拡大縮小、変形などの基本的な変換操作を 2 次元空間...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

Docker ベースのよく使われる CentOS7 イメージの概要

目次1 Dockerをインストールする2 国内ミラーソースの設定3 中国語環境基本版Centos7イ...

Web デザインにおける HTML フォーマットと長いファイルに関するヒント

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

vue プロジェクトのデプロイと Nginx でのプロキシ設定の問題の分析

1. nginxをインストールして起動する # nginxをインストールする sudo apt-ge...

Vue で Axios 非同期リクエスト API を使用する方法

目次基本的なHTTPリクエストの設定async/await を使用した Axios Axios によ...