我如何使用主机http://192.168.2.27
但我的后端会显示http://192.168.2.21
?
示例:
当我在浏览器中输入时www.google.com
,我希望它转到,wwww.yahoo.com
但 URL 地址不会显示www.yahoo.com
。我想我可以在 ii7 中操作它,但我不知道该怎么做。
我正在使用 Windows Server 2008。
答案1
从技术上讲,其他解决方案比我的建议更好。它们也更复杂。如果这不需要非常“干净”,那么一种方法是使用内部 DNS 服务器将 www.google.com 重定向到内部 Web 服务器。在 IIS 中,您可以创建一个响应 www.google.com 的站点。在此站点上,您可以创建一个默认页面,该页面具有一个填充页面并包含 www.yahoo.com 的单个 iframe。
虽然不是很优雅,但还是可以工作的。这完全取决于它的弹性和外观。很多事情都行不通 - 比如在另一个窗口中打开链接。
答案2
你必须安装应用程序请求路由 ARR 模块允许 IIS 充当反向代理服务器。该模块可从 Microsoft 免费获得,可让您完全按照自己的意愿行事。
更新:设置起来非常简单。有关更多信息,请参阅MSDN 上的这篇博客文章。对于您的场景,您基本上只需使用 web.config 设置一个空网站,192.168.2.27
它将负责设置代理规则。此 web.config 的内容将如下所示(或类似):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Reverse Proxy Inbound Rule" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://192.168.2.27/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="Reverse Proxy Outbound Rule" preCondition="ResponseIsHTML">
<match filterByTags="A, Form, Img" pattern="^http(s)?://192.168.2.21/(.*)" />
<action type="Rewrite" value="http{R:1}://192.168.2.27/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
<urlCompression doStaticCompression="false" doDynamicCompression="false" />
</system.webServer>
</configuration>
当然,要使此功能正常工作,您必须启用“应用程序请求路由缓存”模块中的“启用代理”复选框。此模块只能在服务器根级别(即 IIS 管理器中具有您服务器名称的节点)进行配置。
还要确保响应http://192.168.2.21
没有经过 gzip 压缩,否则 URLRewrite 模块将无法重写响应中的链接。