Правила обратного прокси-сервера IIS - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь настроить обратный прокси, который уже реализован с использованием nginx в Linux. Я использую URL-адрес перенаправления рекламы и ARR. Что я хочу сделать, так это когда кто-то нажимает

www.example.com/product1/ 

, он должен отправить запрос на

product1.example.com:8443. 

, а если кто-то нажмет

www.example.com/product2/ 

, он должен отправить просьба product2.example.com:8449 и так далее и тому подобное. Проблема, с которой я сталкиваюсь, заключается в том, что когда запрос достигает значения product1.example.com:8443 с использованием www.example.com/product1/ и открывается страница содержимого, всякий раз, когда я пытаюсь получить доступ к содержимому product1.example.com:8443 с использованием www.example.com/product1/, выдается ошибка 404.0 - Not Found, пожалуйста обратите внимание, что product1.example.com:8443 и product2.example.com:8449 не размещены в IIS. Они находятся на разных виртуальных машинах. Я просто использую обратный прокси IIS для перезаписи URL. Насколько я понимаю, это какой-либо относительный путь или, в этом отношении, абсолютные пути также должны быть переведены в новую структуру URL.

оригинальный веб, файл конфигурации выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^product1(.*)" />
<action type="Rewrite" url="http://product1.example.com:8443/{R:1}" />
</rule>
<rule name="Portainer-reverse-proxy" stopProcessing="true">
<match url="^product2(.*)" />
<action type="Rewrite" url="http://product2.example.com:8449/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^/(.*)" />
<action type="Rewrite" value="/{C:1}/{R:1}" />
<conditions>
<add input="{URL}" pattern="^(product1|product2).*" />
</conditions>
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>

1 Ответ

0 голосов
/ 29 апреля 2020

Ваш URL переписан неверно, вы можете попробовать код ниже:

<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^product1(.*)" />
<action type="Rewrite" url="http://product1.example.com:8443{R:1}" />
</rule>
<rule name="Portainer-reverse-proxy" stopProcessing="true">
<match url="^product2(.*)" />
<action type="Rewrite" url="http://product2.example.com:8449{R:1}" />
</rule>

С уважением,

Сэм

...