効果 現在、プロジェクトは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プロジェクト構造の仕組みの詳細な説明
CS: ...コードをコピーコードは次のとおりです。 html,body{ margin:0px; ...
序文会社の業務上のニーズにより、独自の MongoDB サービスを構築する予定です。MongoDB ...
問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...
/******************** * カーネルにおけるリンクリストの応用********...
この記事では、携帯電話認証コードログインを実装するためのVueの具体的なコードを参考までに共有します...
1. less依存関係をインストールします: npm install less less-loade...
この記事では、例を使用して MySQL ビューの原理と使用方法を説明します。ご参考までに、詳細は以下...
1.MySqlをダウンロードしてインストールする公式ウェブサイトからMySqlデータベースをダウンロ...
HTML タグ: 上付き文字HTML では、<sup> タグは上付き文字のテキストを定義...
フロントエンドの担当者であれば、面接でも仕事中でも、「CSS を使用して中央揃えにする」という効果に...
ブーストをインストールPython から C/C++ を呼び出す方法はたくさんあります。この記事では...
コアコード /*-------------------------------- 2つ以上のフィール...
データの昇順、降順ソート1. フィールド名による単一フィールドのソート順機能:どのフィールドを基準に...
1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...
Weibo ユーザーのフォローを一括で解除するクールな JavaScript コードWeibo には...