IIS ARR 3.0 - 使用 Url Rewrite 更改 Web API 响应主体中的基本 Url

IIS ARR 3.0 - 使用 Url Rewrite 更改 Web API 响应主体中的基本 Url

我有一个本地 IIS 服务器,托管在端口 5000 上运行的 Asp.net Core 3.1 Web API。使用 wireguard,本地服务器与面向公众的服务器连接。面向公众的服务器还具有启用了 ARR3.0 的 IIS 10,并将站点创建为https://api.example.com。使用 IIS 作为反向代理,本地 API 已公开并正在被移动应用程序使用。

以下 URL 重写规则已写入 web.config:-

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://192.168.2.79:5000/{R:1}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="true">
                    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.2.79:5000/(.*)" />
                    <action type="Rewrite" value="http{R:1}://api.example.com/{R:2}" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern=".*/.*" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

API 运行正常并返回所有响应。问题在于,如果直接部署在服务器上,API 响应会返回动态生成的图像 URL,这是正确的,但在反向代理后面,它返回的是本地 URL,这是不正确的。我想在 API 响应主体中重写基本 URL。我该怎么做?

从 Swagger 文档测试 API 调用

动态生成图像 URL 的代码:- 动态生成图片 URL 的代码

请告诉我,如何重写 API 响应主体中的基准 URL?

相关内容