効果 現在、プロジェクトは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プロジェクト構造の仕組みの詳細な説明
効果: <!doctypehtml> <html> <ヘッド> ...
目次序文DockerファイルDockerfile とは何ですか? Dockerfile 構文Spri...
例: VMware IOInsight は、VM のストレージ I/O 動作を理解するのに役立つツー...
テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...
デフォルトでは、テーブルの境界線は 0 ですが、テーブルの境界線を設定できます。基本的な構文<...
1. app.jsonを使用してページを作成する私たちの通常の開発習慣によれば、新しいページを作成す...
目次現象根本原因分析getLastPacketReceivedTimeMs() メソッドの呼び出し時...
HTML5 では、ヘッダー、フッター、ナビゲーションなどのセマンティック タグが追加されているため...
01. コンパイルオプションとカーネルコンパイルLinux カーネル (英語: linux kern...
Docker をインストールした後、会社が構築したプライベート サーバー Harbor からプルしよ...
この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...
1. scale() メソッドズームとは「縮小」と「拡大」を意味します。 CSS3 では、scal...
序文データ中心のアプリケーションの場合、データベースの品質はプログラムのパフォーマンスに直接影響する...
以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...
では、早速リソースについて見ていきましょう。 123WORDPRESS.COM ダウンロードSQLy...