需求
某个公共 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 访问了。 或者是有没有做过这个需求的人,有更优雅的实现方式?