我可以设置从一个子域级别到更高子域的 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 重定向。
我在 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 重定向。