Tôi có một máy chủ IIS cục bộ lưu trữ API web Asp.net Core 3.1 đang chạy ở cổng 5000.
Sử dụng wireguard, máy chủ cục bộ được kết nối với máy chủ công khai.
Máy chủ đối mặt công khai cũng có IIS 10 với ARR3.0 được bật và có trang được tạo dưới dạng https://api.example.com
.
Sử dụng IIS làm proxy ngược, API cục bộ đã bị lộ và đang được ứng dụng dành cho thiết bị di động sử dụng.
Quy tắc Viết lại Url sau đây đã được viết trong 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 hoạt động tốt và trả lại tất cả phản hồi.
Sự cố xảy ra khi phản hồi API trả về Url hình ảnh được tạo động, điều này đúng nếu được triển khai trực tiếp trên máy chủ, nhưng đằng sau Proxy ngược, nó trả về Url cục bộ, điều này không chính xác.
Tôi muốn viết lại Url cơ sở trong nội dung phản hồi API. Làm thế nào tôi có thể làm điều đó?
Mã để tạo Url hình ảnh động: -
Vui lòng cho tôi biết, làm cách nào tôi có thể viết lại url cơ sở bên trong nội dung phản hồi API?