让我快速说明我不是服务器管理员,所以我很可能在这里问“错误”的问题。
我的情况是,我们有一个域,它将提供由现有的独立应用程序配置和构建的静态文件(HTML,图像等)。在某些预定的日期时间,我们需要将站点的内容更改为一组不同的静态文件。
由于文件将全部提前准备好,我想知道nginx是否有可能“切换”根目录,根据这些预定的日期时间将流量引导到适当的地方。
所以,如果有一系列目录可能是这样的:
/www.example.com-20160701000000/content/public
/www.example.com-20160708000000/content/public
/www.example.com-20160801120000/content/public
然后配置会说从2016年7月1日00:00:00到2016年7月7日23:59:59,www.example.com的网站根目录为/www.example.com-20160701000000/content/public
,依此类推。
我研究过的其他一些事情:
<!--# include file="www.example.com-$datestamp/content/public/index.html" -->
,但似乎我必须为每个页面执行此操作?如果版本之间的页面名称不同,我也不确定它是如何工作的。所以tl; dr,可以通过某种方式配置nginx,以便在不同的预定时间拥有对域有效的根目录吗?或者是否有更好的解决这个问题的方法,我不知道?
答案 0 :(得分:1)
nginx
包含名为$time_iso8601
和$time_local
的变量,可用于构建动态根。有关详细信息,请参阅this document。
一种方法是将规则构建为映射,并使用映射变量或命名捕获来适当地设置root
指令。有关详细信息,请参阅this document。
我用这个测试了这个概念:
map $time_iso8601 $root {
default /usr/local/www/test;
~^2016-06-2[0-9] /usr/local/www/test/test-20160625;
}
server {
root $root;
...
}