如何使用nginx基于日期重定向?

时间:2017-11-07 16:42:00

标签: http nginx reverse-proxy nginx-reverse-proxy

因此,客户端正在网址上运行促销,其中每个连续的日期网址必须是不同的网页。所有网页都已存在,只是意味着我们必须每天在此网址上进行临时重定向。为了避免每天手动执行此操作,我想知道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语法,所以这只是一个例子。这类事可能吗?

1 个答案:

答案 0 :(得分:1)

nginx有一个日期时间变量和一个正则表达式引擎,所以如果你的日期时间边界处于尴尬的地方,它肯定是可能的,但不是很漂亮。

例如,11月5日至11月14日UTC包含可以表示为:

if ($time_iso8601 ~ ^2017-11-(0[5-9]|1[0-4]) ) { ... }

作为替代方案,请考虑将正则表达式放入map。有关详情,请参阅this document。此外,还有可用的语言扩展,例如Perl或Lua。