如何在IIS上托管无限的未知域?

时间:2012-05-18 13:56:24

标签: asp.net .net iis powershell dns

在即将开发的webapp的即将推出的版本中,我需要从单个站点提供多个域。网站上的代码将识别各个域并相应地更改内容。我不知道我们将要服务的所有域名,因为客户可以在其网站上添加新域名。编码部分,我知道怎么做 - 当客户端添加一个域时,我们的数据库中会有一个相应的条目,它将作为控制显示哪组内容的键。

事情是,我吮吸系统管理。服务器已经托管了十几个与此webapp无关的不同站点,因此不是每个访问我们服务器IP的域都可以通过我上面描述的代码。如果我提前知道域名,我可以简单地将它们指向我们服务器的IP,然后在IIS中创建绑定来处理每个域。但由于我不提前知道这些域名,我相当茫然。我该怎么做才能使我的IIS7服务器支持这种情况?

2 个答案:

答案 0 :(得分:3)

看了一下之后,我找到了一些选择。

1)将其纳入代码
可能最好的选择是programmatically create bindings in IIS6in IIS7。这样一切都集成到了webapp中,这意味着应用程序之外没有任何麻烦或大惊小怪。它需要在应用程序本身中做更多的工作,但保持清洁并在单个代码库中保持此操作的所有功能的好处几乎绝对值得。

2)PowerShell
另一种选择是为powershell设置一个脚本,让它根据检测数据库更改的脚本来处理这些内容。这也可以很好地工作,但是具有创建两个代码库来维护的缺点。

3)删除域绑定
This answer让我尝试从IIS中的webapp绑定中删除现有域。进行此更改后,只需访问IP地址即可访问我的webapp(因此绑定不再是问题)。到目前为止,我们为此webapp设置的一个域仍然可以到达所需的站点。因此,似乎解决方案可能就像在IIS上的绑定中没有列出主机/域一样简单。只要只有一个站点执行此操作,所有与另一个绑定不匹配的流量都会加载该站点。这里的一大优点是它比上面提到的任何编码解决方案花费更少的时间/精力。缺点是您只能在服务器上有一个站点以这种方式执行,并且您不能再将服务器锁定为仅提供具有已识别域的内容。

答案 1 :(得分:0)

是否可以为服务器添加额外的IP地址?

通过这种方式,您可以让IIS处理此IP地址上的所有请求,并仅为这些请求运行逻辑。离开现有的网站。