IIS URLRewrite转发到不同的端口

问题描述 投票:0回答:1

我想在 IIS 中托管多个 API,这些 API 都应该可以通过标准 http 端口 80 访问。然后,在内部 IIS 应该将此请求转发到其他本地端口,例如:

http://someip:80/api1/request1 -> http://localhost:1234/request1

http://someip:80/api2/request2 -> http://localhost:5678/request2

我尝试通过使用具有以下规则的 URLRewrite 来实现此目的

enter image description here

据我了解我应该设置什么

a) 满足任何请求

b) 检查 QUERY_STRING 是否匹配 /bosswrapper/(.) 并将 (.) 内容放入 {C:1}

c) 将该请求替换为 http://localhost:12345/{C:1}

这意味着 http://somehost/bosswrapper/foo/bar 应该变成 http://localhost:12345/foo/bar。

当我直接调用 http://localhost:12345/foo/bar 时一切正常,当我调用 http://somehost/bosswrapper/foo/bar 时则不然。我错过了什么?

url iis url-rewriting
1个回答
3
投票

http://somehost/bosswrapper/foo/bar -> http://localhost:12345/foo/bar

您的重写规则不完全正确,请尝试

web.config
中的以下重写规则:

<rewrite>
        <rules>
            <rule name="my rule">
                <match url="bosswrapper/(.*)" />
                <action type="Rewrite" url="http://localhost:12345/{R:1}" />
            </rule>
        </rules>
    </rewrite>

enter image description here

QUERY_STRING
服务器变量匹配URL的参数字符串,不应该用于匹配URL的路径部分。

此外,您的重写规则应该在主机名为

somehost
的站点上创建。

© www.soinside.com 2019 - 2024. All rights reserved.