CNAME 域名解析来实现 SaaS 服务自定义域名,一般是怎么做的,都是用 nginx 吗?

252 天前
 idontnowhat2say

需求

某个公共 SaaS 服务 a.com 需要面向多个租户,每个租户需要自定义域名和 logo 。

现状

之前的同事设计的架构,每个租户提供一个域名,一台云服务器,域名对应的 ssl 证书,然后在云主机上部署 nginx 通过反向代理的方式将 customer.com 转发到 a.com

思考

我觉得这样的设计不是最佳设计,复杂麻烦且难以运维。我见过的一些 SaaS 服务如腾讯企业邮箱,支持在管理后台上传 ssl 证书和自定义域名,如:mail.companyname.com CNAME 解析到的 ssl.exmail.qq.com 登录也是通过 mail.companyname.com 来进行登录的。实际后台服务都是腾讯的邮箱 SaaS 服务。

疑问

这个方案的代码逻辑的最佳实现是怎样做的?我知道 nginx 支持配置多个 server name 和 ssl certificate 。我想到的实现方法的逻辑是,商户登录管理平台,上传证书和填写自定义域名后,在 nginx 服务器下 生成一份 conf 文件,然后租户添加 CNAME 后指向 a.com ,就可以实现使用自己的域名 customer.com 访问了。 或者是有没有做过这个需求的人,有更优雅的实现方式?

502 次点击
所在节点    问与答
2 条回复
idontnowhat2say
252 天前
还有一个问题,假设 a.com 是在腾讯云上,但租户买的域名 customer.com 并且备案是在阿里云上,那么 customer.com cname 解析到 a.com 会被 sni 阻断的,因为阿里云上未对 customer.com 域名进行备案。那么这个问题该怎么解决?
julyclyde
248 天前
多个层次:
TLS 层次:可以用通配符证书、多域名证书(一般 CDN 服务商才有这个资格)
备案层次:没备案肯定是不行的
应用程序层次:可以通过读取 Host header 来区分,倒是不太依赖于前面 TLS 的处理结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1025429

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX