効果 現在、プロジェクトは2つ(project1、project2)あり、nginxに付属するindex.htmlがあります。サブプロジェクトのルーティングを統一するために、対応するリンクコード(後で貼り付け)を追加しました。 次のような効果が得られると期待しています (IP: localhost、ポート: 8080 と想定)。
さっそく設定を始めましょう Vue 構成 私はプロジェクトをビルドするために vue-cli2 を使用しているため、それに応じていくつかの vue 構成パラメータを変更する必要があります。 configフォルダ内のindex.jsはパッケージ化されているので、build.assetsPublicPath内の対応するプロジェクト名を変更する必要があります。例: //プロジェクト1 モジュール.エクスポート = { 開発者: {}, 建てる: { assetPublicPath: '/project1/' // 先頭と末尾の '/' に注意してください } } //プロジェクト2 モジュール.エクスポート = { 開発者: {}, 建てる: { assetPublicPath: '/project2/' // 先頭と末尾の '/' に注意してください } } config フォルダ内の prod.env.js を次のように変更します。 //プロジェクト1 モジュール.エクスポート = { NODE_ENV: '"production"'、 BASE_API: '"/api/pro1"' // これは後で nginx の設定に対応します} //プロジェクト2 モジュール.エクスポート = { NODE_ENV: '"production"'、 BASE_API: '"/api/pro2"' // これは後で nginx の設定に対応します} [注] 私のプロジェクトではプロキシプレフィックスとしてBASE_APIを使用しているため、ここにない場合は独自のプロキシ設定を見つける必要があります。 vue-router ファイルの設定は各自で異なるため、ルーターの設定ファイルを見つけて内部的に変更する必要があります。 // 履歴モードを使用しました。ハッシュモードはテストしていませんが、同じ効果があると思います // project1 デフォルトの新しいルーターをエクスポートします({ base: '/project1/', // サブプロジェクト名を変更することに注意してください。これは build.assetsPublicPath に対応します。 モード: '履歴'、 スクロール動作: () => ({ y: 0 }), ルート: [] }) //プロジェクト2 デフォルトの新しいルーターをエクスポートします({ base: '/project2/', // サブプロジェクト名を変更することに注意してください。これは build.assetsPublicPath に対応します。 モード: '履歴'、 スクロール動作: () => ({ y: 0 }), ルート: [] }) [注意] npm run buildで.tap(*)のようなエラーが出る場合があります。これはパッケージ内のhtml-webpack-pluginのバージョンに問題があるためです。以下の文を実行してください。 # このバージョンは package.json のバージョンですが、このバージョンを再指定する必要があります$ npm i [email protected] -D Nginx の設定 まず、私のディレクトリは次のようになります。無関係なファイルはすべて次のように表示されます... 。 ├─conf │ ├─... # その他のファイル│ └─nginx.conf │ ├─html # ここだけ見て、他は今のところ使わない│ ├─project1 │ │ └─静的 │ │ ├─css │ │ ├─フォント │ │ └─js │ │ ├─グ │ │ └─V │ ├─プロジェクト2 │ │ └─静的 │ │ ├─css │ │ ├─フォント │ │ └─js │ │ ├─グ │ │ └─V │ ├─index.html │ └─50x.html └─... # その他のファイル [説明] 私の nginx ディレクトリはネイティブで、html フォルダが含まれています。手間を省くために、これを直接使用します。もちろん、他のディレクトリを指定することもできますが、今のところは私と同じ設定を使用して、後でカスタマイズしてください。 次に、confフォルダ内のnginx.confファイルの設定を開始します。 元のファイルを直接変更し、変更された構成はすべて http モジュール内にあったため、他の不要なコードを次のように置き換えました... # ... # リバースプロキシ http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; ファイル送信オン; キープアライブタイムアウト65; クライアントの最大ボディサイズは20Mです。 クライアントボディバッファサイズ 10M; ラージクライアントヘッダーバッファ 4 128k; # これはクラスターアップストリームとして使用できます p1_server { サーバー localhost:8081; } # これはクラスターアップストリーム p2_server として使用できます { サーバー localhost:8082; } サーバー{ 8080を聴く; server_name ローカルホスト; 文字セット utf-8; プロキシ接続タイムアウト 180; プロキシ送信タイムアウト 180; プロキシ読み取りタイムアウト 180; proxy_set_header ホスト $host; proxy_set_header X-Forwarder-For $remote_addr; root html; # ここでフォルダーを指定します # プロジェクトのルート全体。私は面倒だったので同じファイルに直接書きました # たくさんある場合は、複数の conf ファイルを設定し、include を使用して関連付けることができます location / { try_files $uri $uri/ /index.html; # ここで、htmlフォルダ内のindex.htmlが指定されていることがわかります } #プロジェクト1 # 以下は、現在の vue プロジェクトの config/index.js の build.assetsPublicPath 構成です。 # これは、Vueプロジェクトで設定されたルーターのベースでもあります 場所 ^~ /project1 { try_files $uri $uri/ /project1/index.html; # ここでは、htmlフォルダの下のproject1フォルダのindex.htmlが指定されていることがわかります。 } #プロジェクト2 # プロジェクト2の設定場所はここです ^~ /project2 { # try_files $uri $uri/ /project2/index.html; # ここでは、htmlフォルダの下のproject2フォルダのindex.htmlが指定されていることがわかります。 } # これは、project1 が構成のために呼び出す必要のあるインターフェースです。場所 /api/pro1 { # これは、vue プロジェクトの prod.env.js の構成 BASE_API です。 proxy_redirect オフ; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://p1_server; # ここでの p1_server は上記の設定に対応します。upstream p1_server {}、ここでクラスタリングを行うことができますが、必要ないので、単純に設定します} # これは、project1 が構成場所 /api/pro2 のために呼び出す必要のあるインターフェースです { # これは、vue プロジェクトの prod.env.js の構成 BASE_API です proxy_redirect オフ; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://p2_server; # ここでの p2_server は上記の設定に対応します。upstream p2_server {}、ここでクラスタリングを行うことができますが、必要ないので、単純に設定します} # ... } # ... } 最後に、私が修正したindex.htmlのコードを投稿しました 追記なので追記したコードはそのまま掲載し、他は… ... <p><em>nginx をご利用いただきありがとうございます。</em></p> <!-- 表示場所 --> <!-- 開始: 追加 --> <時間> <a href="/project1" rel="external nofollow" >プロジェクト 1</a> | <a href="/project2" rel="external nofollow" >プロジェクト 2</a> <!-- 終了: 追加 --> </body> <!-- 表示目的のため --> 最終デバッグ すべての設定が完了したら、nginx を起動できます。方法がわからない場合は、自分で解決してください。 起動は成功しました。ブラウザに http://localhost:8080 と入力すると確認できます。 プロジェクト1をクリックすると、リンクがhttp://localhost:8080/project1になることがわかります。 プロジェクト 2 をクリックすると、リンクが http://localhost:8080/project2 に変わります。これはまさに予想どおりであり、成功です。 【形而上学の強引な説明】その日も設定はしたのですが、起動するとすぐにエラーが出たので結局諦めました。しかし、翌日、確認する準備ができたとき、起動したときにはすべて問題ありませんでした。私はとても混乱しました! 私と同じ問題に遭遇した場合は、そのまま放置してください。翌日には解決されるかもしれません。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CocosCreatorプロジェクト構造の仕組みの詳細な説明
<本文> <div id="ルート"> <h2&...
序文最近、4 年間実行されている Java EE Web プロジェクトでは、システムが開けないという...
1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...
MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...
すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...
カーソルカーソルは、結果セット内のデータを表示または処理するために使用される方法です。カーソルを使用...
目次1. Dockerを使用する利点2. Dockerをインストールする1) LinuxにDocke...
背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...
html2canvas は、HTML 要素からキャンバスを生成するライブラリです。描画されるキャンバ...
以前は、ほとんどすべての Web サイトに、すべてのページをリストしたサイトマップ ページがありまし...
「通常 1em=16px」と言うのはなぜですか?ユーザーのブラウザによってレンダリングされるデフォル...
前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...
目次リナックス1. crontabの基本的な使い方2. ログを有効にする3. スケジュールされたタス...
序文少し前に、興味深い問題を目にしました。Vue のデータが変更された後に、ビューを同期的に更新する...
まず、Webフロントエンドエンジニアの価値についてお話ししましょう。現在、Web製品のインタラクショ...