У меня есть веб-приложение, работающее на одном сервере, и я использую IIS с rewriteURL на другом сервере в качестве обратного прокси-сервера.
Я настроил входящие правила так, чтобы адрес обратного прокси переписывался адресом сервера веб-приложений. Это прекрасно работает.
Однако приложение позволяет пользователям загружать некоторый контент и перенаправляет их на адрес загрузки. Прямо сейчас пользователи перенаправляются на локальный IP-адрес сервера веб-приложений, а не на общедоступный адрес обратного прокси-сервера.
Я понимаю, мне нужно отредактировать исходящие правила, чтобы поймать это, но я почему-то не понимаю.
Я следовал инструкциям здесь https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/modifying-http-response-headers
и мои текущие правила перезаписи выглядят так
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="er-platform" stopProcessing="true">
<match url="^er-platform(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://192.168.80.6:8443/{R:0}" />
<serverVariables>
<set name="ORIGINAL_HOST" value="{HTTP_HOST}" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<rule name="er-platform" preCondition="IsRedirection" enabled="true">
<match serverVariable="RESPONSE_LOCATION" pattern="^(https?)://[^/]+/(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{ORIGINAL_HOST}" pattern=".+" />
</conditions>
<action type="Rewrite" value="{R:1}://{ORIGINAL_HOST}/{R:2}" />
</rule>
<preConditions>
<preCondition name="IsRedirection">
<add input="{RESPONSE_STATUS}" pattern="3\d\d" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
Я все еще перенаправляюсь на локальный IP-адрес при попытке что-то скачать. Как мне нужно изменить правила, чтобы сделать это правильно?
Спасибо,
Томас