我可以设置从一个子域级别到更高子域的 CNAME 捕获所有重定向吗?

Can I set up a CNAME catch-all redirect from one subdomain level to a higher subdomain?

我在 Route53 for AWS 中为环境设置了数百个子域,如下所示:

<appX>.dev.internalurl.us
<appX>.qa.internalurl.us
<appX>.pt.internalurl.us
<appX>.internalurl.us

问题是我们的生产内部 url 缺少 url 中的 'prod' 环境,这需要我们向所有配置脚本添加条件,例如:

如果 'prod.' 在 url 中: url = url.substring('prod.', '')

我想要的是:

<appX>.prod.internalurl.us to go to <appX>.internalurl.us automatically.

编辑:

我添加了 CNAME 以将 prod.internalurl.us 路由到 internalurl.us,如下所示:

*.prod.internalurl.us > internalurl.us

但这显然行不通,因为我需要一个通配符上的捕获组!它忽略了第一个 "appX" 子域。

我不想输入数百个 CNAMES,因此我正在寻找一个子域级别到其父级的全能重定向。

有没有办法使用 CNAME 执行此操作,或者它是否需要 运行 prod.internalurl.us 的 nginx 代理才能完成此工作?

可能有用的解决方案很简单。为了找出答案,让我问一个问题。为什么在 DNS 级别需要此功能?

What I'd like is:

.prod.internalurl.us to go to .internalurl.us automatically.

CNAME 对有条件的 URL 重写没有帮助,该层上没有这样的逻辑。有用的是可以通过 Nginx 管理 HTTP 层 301 重定向:

server {
  server_name  ~^(?<app>.+)\.prod\.internalurl\.us$;
  return       301 http://$app.internalurl.us$request_uri;
}

没有代理,而是 HTTP 301 重定向。