如何重定向而不显示真实的源 URL 地址

如何重定向而不显示真实的源 URL 地址

我如何使用主机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 模块将无法重写响应中的链接。

相关内容