2

因此,客户正在一个 url 上运行促销活动,其中每天该 url 必须是不同的网页。所有的网页都已经存在,这只是意味着我们必须每天在这个 url 上放置一个临时重定向。为了避免每天手动执行此操作,我想知道这种日期条件重定向是否可以使用 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 语法不太熟悉,所以这只是一个例子。这种事情可能吗?

4

1 回答 1

1

nginx有一个 datetime 变量和一个正则表达式引擎,所以它当然是可能的,只是如果你的 datetime 边界在尴尬的地方不是很漂亮。

例如,UTC 时间 11 月 5 日至 11 月 14 日(含)可以表示为:

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

作为替代方案,请考虑将正则表达式放入map. 有关更多信息,请参阅此文档。此外,还有可用的语言扩展,例如 Perl 或 Lua。

于 2017-11-07T17:47:48.080 回答