У IIS есть несколько сайтов:
Также есть TomCat, работающий на
localhost:8087
Проблема в том, как выставить TomCat извне как
b.domain2.com
Что я сделал:
Добавлены правила перезаписи URL обратного прокси на b.domain2.com
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8087/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" >
<match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:8087/(.*)" />
<action type="Rewrite" value="http{R:1}://femiscan.a2itsolutionsllc.com/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
Что я вижу:
Локально если я перейду к
http://b.domain2.com
мой браузер показывает веб-сайт TomCat как
http://localhost:8087
(Зачем?)
Внешне если я перейду в Chrome к
http://b.domain2.com
он пытается туннель к
http://localhost:8087
Если я перейду в IE, он вернет ошибку 500 (Fiddler: HTTP / 1.1 500 Ошибка модуля перезаписи URL).
Вопрос: Что я делаю не так? Можно ли это сделать и как?
Ваше действие настроено на перезапись, поэтому оно переписывает URL-адрес.
В диспетчере IIS:
8087
Matches the Pattern
Regular Expressions
*
{HTTP_HOST}
Matches the pattern
b.domain2.com
Ignore Case
Route to Server Farm
http://
(the name of your server farm)
{R:1}
(НОТА: Это может потребовать некоторой доработки, но, судя по вашему примеру, это должно сработать)