ฉันมีเซิร์ฟเวอร์ IIS ในเครื่องที่โฮสต์ Asp.net Core 3.1 web API ทำงานที่พอร์ต 5000
การใช้ wireguard เซิร์ฟเวอร์ภายในเชื่อมต่อกับเซิร์ฟเวอร์สาธารณะ
เซิร์ฟเวอร์สาธารณะยังมี IIS 10 ที่เปิดใช้งาน ARR3.0 & สร้างไซต์เป็น https://api.example.com
.
การใช้ IIS เป็น reverse proxy API ในเครื่องถูกเปิดเผย & ถูกใช้งานโดยแอพมือถือ
กฎการเขียน Url Rewrite ต่อไปนี้เขียนขึ้นใน 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 ส่งคืน Image Url ที่สร้างขึ้นแบบไดนามิกซึ่งถูกต้องหากปรับใช้โดยตรงบนเซิร์ฟเวอร์ แต่ด้านหลัง Reverse Proxy จะส่งคืน URL ในเครื่องซึ่งไม่ถูกต้อง
ฉันต้องการเขียน Base Url ใหม่ในเนื้อหาการตอบสนองของ API ฉันจะทำอย่างนั้นได้อย่างไร
รหัสสำหรับการสร้าง URL รูปภาพแบบไดนามิก:-
โปรดแจ้งให้เราทราบ ฉันจะเขียน URL พื้นฐานใหม่ภายในเนื้อหาการตอบสนองของ API ได้อย่างไร