因此,客户端正在网址上运行促销,其中每个连续的日期网址必须是不同的网页。所有网页都已存在,只是意味着我们必须每天在此网址上进行临时重定向。为了避免每天手动执行此操作,我想知道nginx是否可以使用这种日期条件重定向。
这里的路线现在是什么样的:
location /10-day-promo {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 300;
proxy_pass http://50.160.80.120:8000;
}
我需要类似的东西:
location /10-day-promo {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 300;
if right_now >= start_date and right_now <= end_date then
return proxy_pass http://50.160.80.120:8000;
end
}
我不太熟悉nginx语法,所以这只是一个例子。这类事可能吗?
答案 0 :(得分:1)
nginx
有一个日期时间变量和一个正则表达式引擎,所以如果你的日期时间边界处于尴尬的地方,它肯定是可能的,但不是很漂亮。
例如,11月5日至11月14日UTC包含可以表示为:
if ($time_iso8601 ~ ^2017-11-(0[5-9]|1[0-4]) ) { ... }
作为替代方案,请考虑将正则表达式放入map
。有关详情,请参阅this document。此外,还有可用的语言扩展,例如Perl或Lua。