Eu instalei o Tomcat como um servidor de aplicativos java por trás do IIS. Usando as seguintes regras, posso reescrever páginas estáticas muito bem, mas, infelizmente, conexões websocket nunca são estabelecidas:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<webSocket enable="false"/>
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/foo/{R:1}" redirectType="SeeOther" />
</rule>
<rule name="Redirect from IIS to Tomcat" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CACHE_URL}" pattern="^(.*)://" />
</conditions>
<action type="Rewrite" url="{C:1}://tomcat.contoso.com/foo/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="Redirect from Tomcat to IIS" preCondition="ResponseIsHtml">
<match filterByTags="A, Form, Img" pattern="^(.*)://tomcat.contoso.com/foo/(.*)" />
<action type="Rewrite" value="{R:1}://apps.contoso.com/foo/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
Alguém conseguiu isso? A regravação de URL ainda suporta websockets (ws: // & wss: //) proxy reverso?