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

推薦する

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

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

MySQL タイムスタンプ比較クエリで遭遇する落とし穴と解決策

目次タイムスタンプ比較クエリで遭遇する落とし穴タイムスタンプクエリ範囲の問題タイムスタンプ比較クエリ...

MySQL InnoDB アーキテクチャの概要

目次導入1. MySQLデータベースの全体的なアーキテクチャSQL インターフェースパーサーオプティ...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

MySQL の低速クエリの最適化: 理論と実践からの制限の利点

多くの場合、クエリの結果は最大で 1 つのデータ レコードになることが予想されます。この場合、制限 ...

node.jsミドルウェアの種類についての簡単な説明

目次概要1. アプリケーションレベルのミドルウェア2. 組み込みミドルウェア3. サードパーティミド...

nginx を使用して http を https に変換するサンプルコード

最近、小さなプログラムを書いています。その小さなプログラムの公式ウェブサイトはhttpsを使用する必...

Angularの動的コンポーネントの詳細な説明

目次使用シナリオ達成方法1. 動的コンポーネントを配置する場所2. コンポーネントのインスタンスを取...

Linuxのファイルとフォルダの権限を操作する方法

Linux のファイル権限まず、現在のディレクトリ内のファイルの内容を確認しましょう。 ls -l ...

40 CSS/JSスタイルと機能的な技術処理

1-ドロップダウン選択ボックスのスタイル設定 - ドロップダウン リストを変更します。 2- <...

jQueryはマウスドラッグ画像機能を実装します

この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...

効率的なMySQLページングの詳細な説明

序文通常、大量のデータを扱う MySQL クエリには「ページング」戦略が採用されます。ただし、ページ...

プロジェクトにaxiosをカプセル化する実際のプロセス

目次序文axiosカプセル化の利点パッケージのアイデア設定の優先順位axiosインスタンス構成1. ...

CSS3 で @media を使用して Web ページの適応を実現するためのサンプル コード

現在、コンピュータモニターの画面解像度はますます高くなる傾向にありますが、携帯電話などのモバイルデバ...