V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
idontnowhat2say
V2EX  ›  问与答

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

  •  
  •   idontnowhat2say · 248 天前 · 499 次点击
    这是一个创建于 248 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求

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

    2 条回复    2024-03-24 15:44:09 +08:00
    idontnowhat2say
        1
    idontnowhat2say  
    OP
       248 天前
    还有一个问题,假设 a.com 是在腾讯云上,但租户买的域名 customer.com 并且备案是在阿里云上,那么 customer.com cname 解析到 a.com 会被 sni 阻断的,因为阿里云上未对 customer.com 域名进行备案。那么这个问题该怎么解决?
    julyclyde
        2
    julyclyde  
       244 天前
    多个层次:
    TLS 层次:可以用通配符证书、多域名证书(一般 CDN 服务商才有这个资格)
    备案层次:没备案肯定是不行的
    应用程序层次:可以通过读取 Host header 来区分,倒是不太依赖于前面 TLS 的处理结果
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1551 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 17:16 · PVG 01:16 · LAX 09:16 · JFK 12:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.