IIS中同一端口建立多个站点(主机头值)

背景:
        在同一客户的项目逐渐变多时不知不觉在客户的服务器上建立了5~6个站点,每个站点都是一个独立的业务系统。此类需求还在不断增加,最终决定将这几个业系统通过一个统一的门户系统整合起来,并且只开放一个端口 ,每一个业务系统都有自己的身份验证、和权限分配模块,好在使用的都是同一个用户库。
解决方案:
          1。虚拟目录
                将各个业务系统分别作成门户站点下的虚拟目录.
                优点: 本身就是在同一个站点下,不需要多个域名区分不同业务系统,可以直接使用ip访问站点.
                缺点: 如果业务子系统大量使用绝对路径访问网站资源时,将子系统移入虚拟目录将会发生无法找到资源的 问题,所以对已经正常运转的业务系统改动较大,需要一开始设计开发时就要使业务子系统严格支持虚拟目录.

          2.主机头值

                将各个业务系统分别赋予同一端口下不同的主机头名称.
                优点: 不严格要求业务子系统支持虚拟目录,同样只需要开放一个端口,各个业务子系统分站点管理跟容易维护,对现有系统做到了最小修改,保证了系统的稳定。
                缺点: 需要不同的域名指向。需要DNS机制的协助来完成,如果在不增加DNS服务器中的主机名称的情况下很难完成此方案。

开发思路:


          第一种“虚拟目录”的方案其实没什么好说的就是体力活,挨个修改业务子系统使得它们完全采用相对路径不管是从服务器端代码还是客户端脚本都修改一遍并且从新测试一遍。

          我主要在此记录一下第二种“主机头值”的方法。

           第一步。在IIS中把各个业务子系统的主机头值设置成不同的域名,并把端口设置成同一个,(注:门户系统也可以不用设置主机头值)

           第二步。在DNS服务器中添加以上主机(每一个主机头值作为一个主机名)并都指向IIS服务器IP地址。注意:所有客户端必须都要可以访问到此DNS服务,否则失败,或采取第三步。

            第三步。如果自己没有DNS服务器并且又不想花钱注册在公网注册域名的情况下可采取此步骤,想办法在客户端从门户站点下访问业务子系统站点前(一定注意此时机)修改客户端 的hosts文件,使得客户端可以解析我们的主机头名。此hosts文件在windows系统文件夹下 例如:C:/WINDOWS/system32/drivers/etc/

如果你的IIS服务器的IP为 192.168。121.12 主机头值分别为AXXX、BXXX。。。

那么在此文件后添加如下行

192.168。121.12   AXXX

192.168。121.12   BXXX

。。。。

大功告成!


注意:IP地址和 主机头值之间要用空格分开。记录一段 javaSript 脚本相信一定会有用处的:

function readfile()
...{
var fso, filehandle, contents;
fso = new ActiveXObject("Scripting.FileSystemObject");
filehandle = fso.OpenTextFile("c:/test.txt", 1);
contents = filehandle.ReadAll();

if (contents)
    document.all("filecontents").value = contents;

filehandle.Close();
}

function writefile()
...{
   var fso, filehandle;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   filehandle = fso.CreateTextFile("c:/test.txt", true);
   filehandle.Write(document.all("filecontents").value);
   filehandle.Close();
}

打印这篇文章 与本文主题相关的文章

你可能感兴趣的:(网络编程)