【问题标题】:IIS URL Rewrite for Reverse Proxying two servers用于反向代理两台服务器的 IIS URL 重写
【发布时间】:2013-09-12 08:00:36
【问题描述】:

我在远程服务器的以下地址上托管了两项服务:

192.168.200.157:80/service1
192.168.200.157:7071/service2

我正在使用 AJAX 请求来请求这些服务。我已经为跨域 AJAX 请求使用了 ARR 和 URL 重写工具。 为此,我在 IIS 的 URL 重写工具中定义了如下规则:

<rule name="ReverseProxyInboundRule1" stopProcessing="true">
    <match url="(.*)" />
    <action type="Rewrite" url="http://192.168.200.157:/{R:1}" />
</rule>

使用此规则,我可以向“service1”发送跨域请求,但发送到“service2”的请求会出现“404 Not Found”错误。

Firebug 结果还显示该规则正在向 service1 发送请求,但无法向 service2 发送请求。

上述规则需要进行哪些修改或添加才能成功向两个服务发送请求?

【问题讨论】:

    标签: ajax iis mod-rewrite


    【解决方案1】:

    在代码中的 action 节点的 url 属性中——注意冒号后跟斜杠。这意味着没有指定端口,因此使用默认端口 80。基本上,这些例子是等价的(所以去掉不必要的冒号):

    http://test1/foo
    http://test1:/foo
    http://test1:80/foo
    

    所以...这条规则说的是针对所有 URL(因为匹配节点的 url 属性将匹配所有值),将所有请求转发到 action 节点的 url 属性值。

    ma​​tch url 值只能选择一些请求(而不是所有请求)。您需要为剩余的请求编写第二条规则。您的第二条规则可能是您的包罗万象的情况,这样的事情将捕获所有到达那么远的请求:

    <rule name="ReverseProxyInboundRule2" stopProcessing="true">
       <match url="(.*)" />
       <action type="Rewrite" url="http://192.168.200.157:7071/{R:1}" />
    </rule>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多