我在stackoverflow问这个问题,但得到了很less的意见: https : //stackoverflow.com/questions/2284917/route-web-requests-to-different-servers-based-on-subdomain
也许这更适合这个人群。 这里又是为了方便:
我有一个平台,用户可以使用子域创build一个新的网站。 将有成千上万的这些,例如abc.mydomain.com,def.mydomain.com。 希望如果我们成功了几十万。
我需要能够将这些域路由到不同的IP来指向特定的应用服务器。 我现在在数据库中有这个映射。
这里有哪些最佳实践和推荐技术?
我看到一些选项:
谢谢。
Update2 :我已经设置了外部通配符DNS指向一个HAProxy Web服务器,它的任务是将请求路由到后端服务器。 映射存储在我们的内部PowerDNS服务器。 现在的问题是如何让HAProxy服务器(或其他)使用内部DNS的值,而不是一些configuration文件或访问列表? –
更新:根据下面的一些build议,似乎反向代理服务器(S)是要走的路。 由于我将重新平衡域 – >服务器映射,因此需要立即运行,而DNS解决scheme上的TTL可能会成为问题。 任何关于使用软件的build议,考虑这个域 – > IP数据存储在一个数据库,我需要这是性能?
鉴于您对服务器之间的实时故障切换的要求,我不能推荐基于DNS的解决scheme – 太多的客户端不会简单地发现更改。
所有这些服务器将在一个网站上? 可以访问客户 – >服务器映射表的弹性前端“反向代理”似乎是最简单的。
我会使用PowerDNS的第二个解决scheme,它是pipe道后端 ,你只需要编写一个软件,它能够读取查询,并通过一个非常简单的协议从stdin / stdout写入响应
如果我直接理解,你会有很多:
subdomains.domain.com
怎么样的代理服务器设置。
在DNS中,为* .domain.com设置通配符,并将其指向您的反向代理服务器。
在您的反向代理上,运行您自己的DNS或使用主机文件将请求映射到适当的后端服务器。
所以path是:客户端 – >反向代理 – >后端服务器
hipache看起来正是你所需要的。 您可以dynamic地添加和删除子域,但只是添加和删除重做条目: