IIS URL重写用于反向代理两台服务器

时间:2013-09-12 08:00:36

标签: ajax iis mod-rewrite

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

192.168.200.157:80/service1
192.168.200.157:7071/service2

我正在使用AJAX请求请求这些服务。我已经使用ARR和URL重写工具来进行跨域AJAX请求。 为此,我在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发送请求。

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

1 个答案:

答案 0 :(得分:0)

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

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

所以...此规则对所有网址的说明(因为匹配节点的 url 属性将匹配所有值),将所有请求转发到操作<中指示的端口80 / strong>节点的 url 属性值。

匹配网址值必须仅选择一些请求(而不是所有请求)。而且您需要为剩余的请求编写第二条规则。你的第二条规则可能就是你的所有情况,像这样的东西将捕获到目前为止的所有请求:

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