同じドメイン名を持つ 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(列名)の実行の違いの詳細な説明

推薦する

CSS3は円錐グラデーション効果を実現します

文法:背景画像: 円錐グラデーション(位置の角度から、開始色、...、最後の色)最初のパラメータ:開...

Typescriptを使用してWeChatミニプログラムを開発するための詳細な手順

Typescript の利点については詳しく説明する必要はありません。ご興味があれば、(https:...

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

上部の固定divは半透明効果に設定できます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

iostat を使用して Linux ハードディスクの IO パフォーマンスを表示する方法

TOP 観察: IO 待機に占められる CPU 時間の割合。30% を超えると、IO の負荷が高くな...

HTML マークアップ言語 - リファレンス

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

完全なショッピングカートを実装するためのミニプログラム

ミニプログラムは、参考までに完全なショッピングカート[すべて選択/選択解除して金額を計算/加算と減算...

Vueの監視プロパティの詳細な説明

目次Vue モニターのプロパティリスナープロパティとは何ですか?リスニングプロパティと計算プロパティ...

CSSは固定比率のブロックレベルコンテナを簡単に実装できる

H5 レイアウトを設計する場合、通常はバナーに遭遇することになります。例えば、2:1 で表示したい場...

純粋な JS を使用して vue.js で双方向バインディング機能を実装する方法

目次まず、双方向バインディングを実装するアイデアについて説明します。これらの機能を実装するための j...

コマンドラインを使用してUbuntuのバージョンを検出する方法

方法1: lsb_releaseユーティリティを使用するlsb_release ユーティリティは、L...

nginx keepaliveの具体的な使い方

http1.1 プロトコルのデフォルトのリクエスト ヘッダーでは、図に示すように、デフォルトで ke...

Telnet は Alpine イメージの busybox-extras に移動されました

Alpine イメージの telnet はバージョン 3.7 以降、busybox-extras パ...

Navicat 8でMySQL用のデータベースを作成する方法

ウェブサイトを開発する場合、データを保存するためにデータベースを使用する必要があることがよくあります...

Linux+ApacheサーバURLの大文字と小文字の区別の問題を解決する

今日、問題が発生しました。ブラウザのアドレスバーにURLアドレスを入力する際、ページを正常にアクセス...