Skip to content

多租户

最后更新: 几秒前
实践版本: v4.1.0

鸣谢

本功能最初由 GitHub@小熊(xtanyu) 大佬提交 PR,感谢大佬的开源贡献。

后端 PR:https://github.com/continew-org/continew-admin/pull/97 前端 PR:https://github.com/continew-org/continew-admin-ui/pull/34

cnadmin 基于 ContiNew Starter | 扩展模块-租户模块,采用行级隔离级别实现多租户能力。

租户使用

关于租户功能的基础使用,暂时可以通过下方文档了解,后续将根据需求进行完善。

租户域名

在创建/维护租户时,可以给租户绑定域名。租户用户即可通过绑定的域名来访问本系统,届时登录则无需输入租户编码。

场景示例:

  1. 系统默认通过 www.example.com 域名访问。
  2. 租户 A 的用户,可以通过 a.example.com 子域名访问本系统。
  3. 租户 B 的用户,可以通过 b.example.com 子域名访问本系统。

DNS 配置

在域名管理控制台,增加如下解析配置。

主机记录记录类型记录值
wwwA服务器IP
*A服务器IP

Nginx 配置

通过调整 server_name,增加泛域名支持即可,SSL 可以申请泛域名证书(*.example.com)。

nginx.conf
nginx
server {
    listen       443 ssl;
    server_name  *.example.com;

    ssl_certificate      /etc/nginx/cert/example.com.pem;
    ssl_certificate_key  /etc/nginx/cert/example.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        root   /usr/share/nginx/html/admin;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
# 将 HTTP 请求转发到 HTTPS
server {
    listen  80;
    server_name  *.example.com;
    rewrite ^ https://$http_host$request_uri? permanent;
}

本地开发

本地开发时,只需修改 hosts 文件即可进行测试。

hosts
127.0.0.1	www.example.com
127.0.0.1	a.example.com
127.0.0.1	b.example.com

本地访问测试时,记得在域名后添加前端端口号。部署到服务器后,则根据你实际配置决定是否增加端口号进行访问。

例如: