IIS Rewrite IP: порт в {домен} / {вещь} - PullRequest
0 голосов
/ 26 августа 2018

Что я пытаюсь сделать:

  • У меня есть домен, скажем 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.

Любые отзывы о том, что я делаю неправильно?

...