以下是该方案: 服务器A托管“主要”应用程序(www.example.com) 服务器B托管支持应用程序(b.example.com) 它们通过192. *地址在内部相互连接,并且可通过DNS外部提供
服务器A有几个通过UNC共享映射的虚拟目录: www.example.com/virtual1 - > \ 192.168.1.1 \ virtual1(在serverB上)
我希望能够运行位于服务器B上的应用程序(通过IIS提供服务)并使其看起来好像在服务器A上运行:
www.example.com/application - > b.example.com/app
我仍然希望能够直接访问服务器B
b.example.com/app
有什么想法吗?
编辑:
<小时/> 原来代理背后的应用程序拒绝让我动态地改变它的形式“动作”(也没有让我改变其他任何东西)。我能够从服务器显示数据;只是无法发布:(
所以这两个答案都指向了正确的方向。我使用了代理:
http://code.google.com/p/iisproxy/
我在服务器A上创建了一个虚拟目录,它与我在服务器B上需要的目录相匹配 - 而且它有效! : - )
答案 0 :(得分:2)
这应该可以在IIS中使用。我记得我必须这样做一次。
使用指向\\ServerB\SharedAppDirOnB
的UNC路径创建虚拟目录,并使用服务器B所需的凭据(如果需要)“Connect As ...”创建虚拟目录。
如果您遇到“连接为...”的问题,则可能是服务器B的文件夹权限问题。请尝试以下操作:在主服务器上添加一个与帐户具有相同名称和密码的新用户帐户在服务器B上。这听起来很愚蠢,但我记得它解决了我的问题。例如,您可以在两台服务器上添加一个新用户帐户:“IisCommon”在两台服务器上使用相同的密码。然后确保您为服务器B上的文件夹(以及共享权限!)提供所有必要的文件访问权限。如果可以访问共享,请尝试首先使用Windows资源管理器手动连接。
确保将新虚拟目录标记为应用程序并授予正确的执行权限。
另一种解决方案是某种反向代理。我在IIS 6.0上使用了第三方产品:ISAPIrewrite用于IIS。 “代理”模式允许您将对主服务器(www.example.com / ...)的请求“转发”到您的其他服务器,但是将结果响应提供给您的主“域”应用程序处理。该功能称为“代理指令”。它接受正则表达式。
答案 1 :(得分:1)
由于从服务器A通过UNC共享提供虚拟目录显然不起作用,因此您需要从服务器b提供b.example.com/app。
DNS将域名解析为IP地址。您要求使用相同的域名根据不同的URL解析为两个不同的IP地址。这不是IIS或Windows可以做的事情。
您的选择是:
在服务器A上编写代理服务,将请求传递给服务器B.如果您希望它完全透明(不仅仅是重定向),您还必须回流响应。这不是微不足道的,但可能。
将服务器B页放入服务器A上新页面的IFRAME中。