多租户saas系统,怎么绑定自定义域名?

目前有个 saas 系统在开发,运营模式是多租户模式,也就是商家入驻模式,类似于有赞。
现在有个需求,每个商家需要可以配置自己的二级域名,以及可以支持自定义域名绑定二级域名,请问有没有比较成熟的方案。
目前能找到的方案是,在 nginx 配置中写 lua 脚本,从 redis 中获取商家对应的指向关系,商家自定义域名通过配置 cname 进行绑定。
各位大佬有好的建议吗?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6

用kubenetes的话,有api接口可以操作添加应用路由,比如go的client:github.com/kubernetes/client-go

3年前 评论

@tsin 感谢回答,目前项目中没有 kubenetes

3年前 评论

一种是二级泛域名,绑定到项目,还有一种是通过域名服务商调用他们的开放API 接口动态的cname 到一个固定的域名上,目前我们主要才用这两种,前者是一级域名固定,后者是随便添加用户自己的域名解析到你们自己服务器指定的域名上,通过接口实现,前台只负责添加用户域名

3年前 评论

@raybon 感谢回答。你说的第一种方案我们在之前的项目中已使用,只是想有没有更好的解决方案,毕竟泛域名解析不太好管理。第二种我去看看我们的域名服务商有没有对应的接口。

3年前 评论
zyxcba

如果不想使用泛域名,也有办法:

  • 解析一个固定的域名,用户给客户绑定使用(如 customer.a.com),但是此域名不应该被直接访问,下面会描述。
  • 给每一个客户生成一个 uuid ( 如 xxxxxxx)
  • 要求登记一个要绑定的域名,比如: kkk.com (这个不是必须的,但建议)
  • 要求客户去任意云厂商开通cdn功能,配置如下:
    • 回源到 customer.a.com
    • 回源host为客户登记的域名
    • 添加自定义的回源 header。 x-customer-uuid: xxxxxxx
    • 服务器在收到请求时,检查是否有 x-customer-uuid,没有直接返回404

一定可行的,我就是这么干的!😄

你可以登陆到 www.digitcert.com.cn 具体是如何要求绑定的。

3年前 评论
zyxcba (作者) 3年前
GitPush (楼主) 3年前

我目前域名是用泛解析,然后laravel中使用扩展包 stancl/tenancy 绑定域名即可实现多租户

3年前 评论
raybon 3年前
GitPush (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!