
次のような状況です。アプリの Web コンテンツは標準ディレクトリにあります/var/www/my.domain.com/html/
。また、このディレクトリ内のどこかにフォルダーがありusers_statics
、アプリはそこにユーザーによってアップロードされた重要なファイルをいくつか保存しています。これらのファイルはフロントエンド ビルドに組み込まれておらず、使用中はこのファイルへの URL のみが必要であることに注意してください。
ただし、私のデプロイ パイプライン スクリプトは、 内のすべてのファイルを削除し/var/www/my.domain.com/html/
、デフォルトではディレクトリを含まない新しいフロントエンド ビルドを挿入しますuser_statics
。例:
rm -rf /var/www/my.domain.com/html/*
cp -av build/. /var/www/my.domain.com/html/
user_statics
そのため、ディレクトリを別の場所に保存し、展開するたびにrsync
Web コンテンツ フォルダーに保存する必要があります。
mkdir /var/www/my.domain.com/html/.../user_statics
rsync -qah ./user-statics-bkp/* /var/www/my.domain.com/html/.../user_statics
この時点でバックエンド アプリに API を追加してそのコンテンツとやり取りしたいので、これがこのフォルダーを処理する最も望ましい方法であるかどうかはわかりません。そのため、たとえば、展開プロセス中にこのフォルダーへの誤った API 呼び出しが発生する可能性があります。
以下のオプションがありますが、どれも完璧ではないようです。
- 何らかの方法で CD パイプラインを書き換えて、展開中にこのフォルダーを「無視」します。
- このフォルダーを
/var/www/html/
フォルダーに移動し、nginx 構成ファイルに追加のディレクティブを書き込みます。 - このフォルダーのサブドメインを開き、このサブドメインのサーバー ブロックを作成します。ただし、この 1 つのフォルダーを新しいサーバー ブロックに分離する「価値がある」かどうかはわかりません。
あなたの経験からすると、これを正しく対処するためのより良い方法はあるでしょうか?
答え1
最後に、このフォルダーをこのパスに配置し、 nginx 構成ファイル/var/www/html/path/to/user_statics
に簡単な場所ディレクティブを追加しました。sites-available/my.domain.com
location /path/to/user_statics {
root /var/www/html/;
}
そのため、その後、nginx はuser_statics
、 とは別のサーバー ファイル システム内のこの場所にリクエストをプロキシします/var/www/my.domain.com/html/
。現時点では、このソリューションは私にとってはうまく機能しています。