我想在 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 来实现此目的
据我了解我应该设置什么
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 时则不然。我错过了什么?
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>
QUERY_STRING
服务器变量匹配URL的参数字符串,不应该用于匹配URL的路径部分。
此外,您的重写规则应该在主机名为
somehost
的站点上创建。