我正在尝试做一些看起来非常基础(且显而易见)的事情,但它没有起作用,所以也许我没有正确地实现这个想法,这就是为什么我需要你的帮助。
我有一个安装有 IIS7 的 Web 服务器(如果它只能在 IIS7.5 中运行,我也可以使用它),其网站配置为端口 80,SSL 证书配置为端口 443。
在此网站下,我有两个应用程序文件夹,每个文件夹运行一个 .NET 应用程序。类似于下面的树:
- 服务器名称 -- 站点 --- 我的应用网站 ---- 应用程序文件夹1 ---- 应用程序文件夹2
我正在像这样组织服务器,因此我不会在网站的根上运行任何应用程序,以避免由于配置继承而造成混淆和配置共享。
我需要做的是将一个子域名映射到该网站的每个应用程序。如下所示:
app1.myDomain.com->应用程序文件夹1 app2.myDomain.com->应用程序文件夹2
但是据我所知,我只能将子域映射到特定网站(使用主机名),而不能映射到应用程序,所以我无法使其工作。
一种可能性是每个应用程序创建一个网站,但是那样我就无法使用 SSL 证书,因为我们不能让两个网站共享同一个端口(80/443)。
有没有办法在 IIS 中做到这一点,或者我是否遗漏了某些东西并试图做一些不可能的事情?
谢谢
答案1
你正在尝试做一件不可能的事!
实际上,并非完全不可能,但使用您当前的证书是不可能的。请记住,查看名称的关键方是客户端。您本质上是在描述您希望客户端看到的布局,这将决定您如何配置服务器。您不能要求服务器“将此目录视为一个网站”,因为这就是网站 - 它是一个与分层目录组相对应的命名空间,并且您已将您的网站描述为 site/directory ;从 URL 的角度来看,site/site 不起作用。
所以:是的!您需要为这些主机名创建实际的网站对象(可能使用 Host 标头支持),并将它们直接指向应用程序目录。这仅适用于 HTTP,但 SSL 比较棘手。
这意味着如果您只有一个 IP 地址,您将需要一个支持 SAN(主题备用名称)的证书和服务器将响应的每个名称的条目,或者一个通配符证书。
实现这些之后,您可以直接编辑配置以添加 SSL 主机头绑定 - 我认为 GUI 不允许您这样做(可能弄错了)。
您还可以实现某种形式的应用代理(ARR;ISA;TMG;UAG;Squid;Apache;等)来转换请求https://app1.yourdomain.com到http://yourserver.yourdomain.com/app1,但该代理的证书要求相同。