我有以下情况。我的应用程序的 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
最后我将此文件夹放在此路径中/var/www/html/path/to/user_statics
,并向sites-available/my.domain.com
nginx 配置文件添加了简单的位置指令:
location /path/to/user_statics {
root /var/www/html/;
}
因此,此后 nginx 将user_statics
请求代理到服务器文件系统中的这个位置,与 分开/var/www/my.domain.com/html/
。到目前为止,这个解决方案对我来说效果很好。