Am un server IIS local care găzduiește API web Asp.net Core 3.1 care rulează la portul 5000.
Folosind wireguard, serverul local este conectat cu serverul public.
Serverul public are, de asemenea, IIS 10 cu ARR3.0 activat și site-ul este creat ca https://api.example.com
.
Folosind IIS ca proxy invers, API-ul local a fost expus și este consumat de aplicația mobilă.
Următoarea regulă de rescriere a adresei URL a fost scrisă în 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-ul funcționează bine și returnează toate răspunsurile.
Problema apare atunci când răspunsul API returnează URL-urile imaginii generate dinamic, care sunt corecte dacă sunt implementate direct pe server, dar în spatele Reverse Proxy-ului returnează adresa URL locală, care nu este corectă.
Vreau să rescriu URL-urile de bază în corpul răspunsului API. Cum pot face acest lucru?
Cod pentru generarea dinamică a adresei URL a imaginii:-
Vă rugăm să-mi spuneți, cum pot rescrie adresa URL de bază în corpul răspunsului API?