同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

フロントエンド プロジェクトとバックエンド プロジェクトは分離されており、フロントエンドとバックエンドはドメイン名を共有します。フロントエンド プロジェクトとバックエンド プロジェクトは、ドメイン名の後の URL プレフィックスによって区別されます。

vue + php プロジェクトを例に挙げます。サーバー モジュールの nginx 構成に直接移動します。

サーバ
 {
 聞く 80;
 #listen [::]:80 default_server ipv6only=on;
 server_name demo.com; #プロジェクトのドメイン名を設定します index index.html index.htm index.php;

 # 1. 処理場所のフロントエンドへの転送 /
 {
  # フロントエンドのパッケージ化後の静的ディレクトリ alias /home/wwwroot/default/vue-demo/dist/;
 }

 # 2. 処理場所 /api/ のバックエンドに転送します {
  try_files $uri $uri/ /index.php?$query_string;
 }

 # 3. 最後に、PHPはここでfpmに転送されます
 場所 ~ [^/]\.php(/|$)
 {
  # バックエンド プロジェクト ディレクトリ ルート /home/wwwroot/default/demo/public/;
  127.0.0.1 のパスは 9000 です。
  fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_index インデックス.php;
  fastcgi.conf をインクルードします。
  pathinfo.conf をインクルードします。
 }

 # 4. バックエンドの静的リソースの処理 location /public/ {
  エイリアス /home/wwwroot/default/demo/public/uploads/;
 }

 #エラーページ 404 /404.html;

 access_log /home/wwwlogs/access.log メイン;
}

簡単な説明

  • ドメイン名の後にプレフィックス /api/ が続く場合、処理のためにバックエンドに転送されます。
  • ドメイン名の後に /uploads/ プレフィックスを追加すると、バックエンドの静的リソースにアクセスします。
  • 正確な位置マッチングの原則により、上記以外のすべての訪問は、フロントエンド ページにアクセスする最初の場所に転送されます。

例えば:

記事リストインターフェースにアクセス

https://demo.com/api/posts を取得します。

アップロードされた画像にアクセスする

アップロード/2022/web/xxx.jpg を取得

フロントエンドのホームページにアクセス

https://demo.com/ から入手

記事ページをご覧ください

https://demo.com/posts を取得

PS: エイリアス パスの最後には / が必要です。

要約する

Nginx プロキシ同一ドメイン名フロントエンドとバックエンド分離プロジェクトに関するこの記事はこれで終わりです。Nginx プロキシ同一ドメイン名フロントエンドとバックエンド分離プロジェクトに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • NodeJS によるフロントエンドとバックエンドの分離の考え方と実践 (VI) Nginx + Node.js + Java のソフトウェアスタック展開実践
  • フロントエンドとバックエンドを分離した nginx 構成を展開するための完全な手順
  • nginx+vue.jsを使用してフロントエンドとバックエンドを分離するサンプルコード
  • Nginxはフロントエンドとバックエンドの分離を実現します
  • VueとNginxをベースにしたフロントエンドとバックエンドのデプロイメントチュートリアルの詳細な説明

<<:  Vue3 でタイマーコンポーネントをカプセル化する方法

>>:  count(1)、count(*)、count(列名)の実行の違いの詳細な説明

推薦する

Vueナンバープレート検索コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

WeChatアプレットを使用して天井効果を実現する方法の例

目次1. 実装2. 問題点3. より良い実装方法があるかどうか検討する要約する背景は日付のタイトルで...

Tomcat での jar のロードに関する異常な問題の分析と解決

現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...

16進カラーコード(完全版)

赤とピンク、およびそれらの 16 進コード。 #990033 #CC6699 #FF6699 #FF...

MySQL IDは1から増加し始め、不連続IDの問題を素早く解決します

mysql idは1から始まり、不連続なidの問題を解決するために自動的に増加します。強迫性障害の私...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

URL 内の特殊記号の意味を知っていますか?

1.# # は Web ページ内の場所を表します。右側の文字はその位置の識別子です。たとえば、ht...

MySQLで数千万のテストデータを素早く作成する方法

述べる:この記事で扱うデータ量は 100 万です。数千万のデータが必要な場合は、量を増やすだけで済み...

nginx+WordPressで個人ブログを構築するプロセス全体の詳細な説明

0x00 はじめにWordPress は、世界で最も人気のある CMS システムです。PHP と M...

MySQLカスタム関数の原理と使用法の分析

この記事では、例を使用して MySQL カスタム関数の原理と使用方法を説明します。ご参考までに、詳細...

Webpackプラグインを書いてnpmに公開するための80行のコード

1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...

Alibaba CloudがCloud Shieldから無料のSSL証明書(https)を申請

プロジェクトでは https サービスを使用する必要があるため、Alibaba Cloud では無料...

Linux コマンドラインで他のユーザーと通信する方法

Linux のコマンドラインで他のユーザーにメッセージを送信するのは簡単です。これを行うコマンドは多...

CSS 等高レイアウトの一般的な方法

等高レイアウト同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。等高レイアウトの実装の観点...

CSS+JS で水滴の波紋アニメーション ボタン効果を実装するサンプル コード

コードは次のようになります。 <!DOCTYPE html> <html lang...