django多租户和通配符子域

时间:2017-08-28 18:25:11

标签: django multi-tenant

我想为网站上的每个客户提供client.domain.com。在实践中,client.domain.com相当于www.domain.com/client/(我知道如何在网址中处理但不是我想要的)。

  1. 我是否可以使用django-subdomains来允许此类通配符而不定义SUBDOMAIN_URLCONFS,因为我不想尝试枚举所有客户端

  2. 我目前正在使用Apache。我也不想为每个客户端创建新的虚拟主机。是否存在使client.mydomain.com有效的通用方法?

  3. 感谢执行#1和#2的所有指针。感谢。

1 个答案:

答案 0 :(得分:1)

  1. 根据example configuration in the docs,您不必枚举所有客户,django-subdomainsROOT_URLCONF中没有条目匹配时SUBDOMAIN_URLCONFS会使用ServerAlias

  2. 我对Apache不太熟悉,但您应该能够使用通配符<VirtualHost *:80> ServerName www.example.com ServerAlias *.example.com ... </VirtualHost>

    var creator = (function() {
    
      var createIfNotExists = function createIfNotExists() {
        _doCreate();
      };
    
      var _doCreate = function _doCreate() {
        console.log('_doCreate was called');
      };
    
      return {
        createIfNotExists:createIfNotExists,
        _doCreate:_doCreate
      };
    }());
    
    var util = {
      createIfNotExists:creator.createIfNotExists,
      _doCreate:creator._doCreate
    };
    
    var spyRequester = sinon.spy(util, '_doCreate');
    util.createIfNotExists();
    
    console.log(spyRequester.callCount); // prints 0 (should be