Что я пытаюсь сделать:
- У меня есть домен, скажем blahblahblah.com
- На сервере он указывает на : 80 и : 443 правильно - это работает
- Я хочу переназначить так, чтобы, если пользователь посещает blahblahblah.com / thing1 затем он сопоставляется с localhost: 5000
- Аналогично, я также хочу переназначить так, чтобы, если пользователь посещает blahblahblah.com / thing2 затем он сопоставляется с другим сервером и портом в моей локальной сети (без доступа к Интернету)
Я хочу использовать свой веб-сервер для связи с другими серверами в моей сети и другими портами через«подкаталоги» или как они там называются в этом случае (site / subdir, site2 / subdir).Я пытался решить эту проблему в течение нескольких дней!Я установил ARR (и включил прокси-сервер) и модули перезаписи URL на моем IIS.
Я пытался узнать, сколько разных шаблонов перезаписи в SO.Я могу добиться частичного успеха, когда маршрут / thingx / разрешается, но все ресурсы ссылаются на blahblahblah.com и (соответственно) не могут найти ресурсы для сайта по этому адресу.
Текущая перезапись (разрешает некоторые ресурсы на blahblahblah.com / thing1 , но другие ошибочно доставлены):
<rewrite>
<rules>
<rule name="Thing1" enabled="true">
<match url="(thing1*)" />
<action type="Rewrite" url="http://localhost:5000/{R:0}" />
</rule>
</rules>
</rewrite>
РЕДАКТИРОВАТЬ: Я обновил свои правила в соответствии с приведенной ниже статьей из Документов Microsoft: Обратный прокси-сервер с перезаписью URL v2 и маршрутизацией запросов приложений .Эти переписки якобы делают именно то, что мне нужно, но в моем случае результат не тот, и я до сих пор не знаю, почему.
<rules>
<rule name="Thing1" enabled="true">
<match url="^thing1/(.*)" />
<action type="Rewrite" url="https://localhost:5000/{R:0}" />
</rule>
</rules>
<outboundRules>
<rule name="Add application prefix" preCondition="IsHTML">
<match filterByTags="A" pattern="^/(.*)" />
<conditions>
<add input="{URL}" pattern="^/(thing1)/.*" />
</conditions>
<action type="Rewrite" value="/{C:1}/{R:1}" />
</rule>
<preConditions>
<preCondition name="IsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
Дополнительные примечания:
localhost:5000
работает как положено localhost/thing1
разрешается в 404 Not Found blahblahblah.com/thing1
разрешается при извлечении HTML-страницы по умолчанию, но ни один из ресурсов (javascript, css и т. д.), они возвращают 404. Not Found.
EDIT: Может быть важно отметить, что эти правила были записаны на сайте по умолчанию (привязано к: 80,: 443) на IIS 'web.config
.Запись этих правил в C:\Windows\System32\inetsrv\config\applicationHost.config
приводит к 500.
Любые отзывы о том, что я делаю неправильно?