域名使用的最佳实践是什么(开发、暂存、生产)?

58
随着容器、Kubernetes、12因子等的出现,跨开发、预发布和生产环境复制相同的环境变得更加容易。然而,在域名约定方面似乎没有公共标准。
据我所见,有两种方法:
使用子域:
* .dev.foobar.tld * .staging.foobar.tld * .foobar.tld
使用单独的域名:
* .foobar-dev.tld * .foobar-staging.tld * .foobar.tld
我能看到这两种方法都有利弊,但我很好奇常见的做法是什么。
顺便提一下,Cloudflare不会为子级子域(例如*.stage.foobar.tld)签发证书。

除了 example.com,您还可以使用 .test 域名。它是专门为此目的保留的。*.loc*.dev*.tld(以及类似的)未被保留,开发者无法劫持它们。 - jww
.corp也是适合的。几年前它几乎成为了可注册的顶级域名,直到有人对大多数企业都使用.corp的方式提出了巨大的争议 - 这将破坏所有这些环境。 - hiburn8
5个回答

57

计算机科学中只有两件难事:缓存失效和取名字。

-- Phil Karlton

这取决于公司规模。

小型企业通常使用破折号并获取通配符证书。因此,它们可能拥有dev.example.com,test.example.com等域名。

在较大的企业中,他们通常已经部署了DNS基础架构,并且配置过程会处理分配。通常看起来像:

aws-eu-central-1.appName.staging.[teamName].example.com
他们要么在所有服务器上使用自己的自签名证书与CA,要么有足够的资金购买SAN证书。
更多灵感: https://blog.serverdensity.com/server-naming-conventions-and-best-practices/ https://mnx.io/blog/a-proper-server-naming-scheme/ https://namingschemes.com/

这句话让我开心了一整天! - Datageek
1
在有了letsencrypt.org之后,分配证书非常容易。如果你是一个Web应用程序,你需要仔细考虑Cookie的可见性和测试。据我所知,通过内部DNS进行巧妙处理是一个坏主意,因为它使得SAAS测试工具更难以利用。 - Andrew
1
@andrew IDD,但许多企业有荒谬的政策阻止使用Let's Encrypt,而坚持使用单一的商业CA。 - Cocowalla
1
@Cocowalla AWS ACM不是免费的,但它非常便宜,并且符合所有企业需求。我想我会加倍支持我的立场。通配符证书具有巨大的影响范围,应该像瘟疫一样避免使用。在生产环境和其他所有环境之间共享相同的DNS根域名是在自找麻烦。 - Andrew
1
@Andrew 我并不是在支持通配符证书;我的观点只是Let's Encrypt让证书分配变得容易,特别是在大型组织中,购买*任何东西的过程都是一场噩梦。 - Cocowalla

5

我们在环境中使用以下DNS名称

  1. *.dev.internal.com(开发环境)
  2. *.tst.internal.com(测试环境)
  3. *.stg.internal.com(预发布环境)
  4. *.internal.com(生产环境)。您也可以使用如*.prd.internal.com的格式。

3
关于顶级域名的一点说明,许多公司也使用“.local”后缀进行内部名称解析。

2

这也取决于您是否希望将开发/测试/暂存版本公开可用,如果不是,您可以进行以下设置:app_name.example.dev、app_name.example.test等。


1
然后你只需要确保你的本地机器上的hosts文件已更新? - Joshua Pinter
@JoshuaPinter 是的。 - cmc
3
除了 example.com,您可以使用 .test 域名。这个域名是专门为此目的而保留的。*.loc, *.dev*.tld(以及类似的域名)没有被保留,无法被开发者劫持。 - jww

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接