使用 URL 重写和 ARR 重定向到同一服务器

使用 URL 重写和 ARR 重定向到同一服务器

场景:一个 Web 服务器在两个不同的地址下运行单个站点:

  • www.mysite.com (常规网站)
  • ws1.mysite.com (网络服务)

两者都可以通过 HTTPS 访问,并且都在同一应用程序上运行(无论是 Web 服务调用还是常规 www 调用都以编程方式处理)。

我在 www 网站上有一个网页,它通过 Javascript 调用 ws1 网站上的 Web 服务。从技术上讲,这是一个 CORS 调用。但是,为了向后兼容,我希望使调用非 CORS。最好的方法是制定 URL 重写规则,将自定义地址(例如 www.mysite.com/ws1/)分叉到 Web 服务位置(ws1.mysite.com),这样浏览器就不会知道这是 CORS(因为归根结底,它并不是真正的“跨源”)。

因此,我在网站上制定了以下规则:

<rewrite>
    <rules>
        <remove name="WS1-Inbound" />
        <rule name="WS1-Inbound" enabled="false">
            <match url="^ws1/(.*)" />
            <conditions />
            <serverVariables />
            <action type="Rewrite" url="https://ws1-mysite.com/{R:1}" logRewrittenUrl="true" />
        </rule>
    </rules>
    <outboundRules>
        <remove name="WS1-Outbound" />
        <rule name="WS1-Outbound" enabled="false">
            <match filterByTags="None" pattern="^https://ws1-mysite.com/(.*)" />
            <conditions />
            <action type="Rewrite" value="ws1/{R:1}" />
        </rule>
    </outboundRules>
</rewrite>

这返回 404.4。啊,所以我打开 ARR,现在我得到了 502.3。

入站规则已成功应用,但永远不会到达出站规则。

我是否:

  1. 在这种情况下需要打开 ARR 吗?
  2. 需要以某种特殊方式处理 SSL?我只需要它通过。

答案1

在这种情况下,IIS 中配置的 HTTP 重定向指令会产生干扰。

编辑:

在 IIS 管理器的网站节点上,我配置了 HTTP 重定向。选中了“将请求重定向到此目标”复选框,其中“https://www.thisismysite.com“(减去“这是”。感谢格式化......)作为地址。下面的“重定向行为”下,“将所有请求重定向到精确目的地(而不是相对于目的地)。”选择的状态代码为“找到(302)”。

我取消了“将请求重定向到此目标”的勾选。我仍在尝试弄清楚这究竟是如何解决问题的。

相关内容