Issue with IIS Reverse proxy

I have XWiki instance running and I am using IIS as reverse proxy to the tomcat for XWiki. For some urls, I get 500 errors. When I access XWiki direct url, I don’t get that 500. It is certainly IIS rewrite module which does something that I can’t seem to figure out.

Here is one of those urls which throws 500 https://mywikiurl.com/rest/liveData/sources/liveTable/entries?timestamp=1659037220812&namespace=wiki%3Axwiki&sourceParams.resultPage=XWiki.LoggingAdminTableJson&sourceParams.translationPrefix=logging.admin.livetable.&sourceParams.queryFilters=currentlanguage%2Chidden&properties=logger&properties=level&properties=actions&offset=0&limit=15&sort=logger&descending=

When I access the same url directly pointing to the tomcat server, it works just fine and produces the response.

http://mytomcat_server_fqdn:8080/xwiki/rest/liveData/sources/liveTable/entries?timestamp=1659037220812&namespace=wiki%3Axwiki&sourceParams.resultPage=XWiki.LoggingAdminTableJson&sourceParams.translationPrefix=logging.admin.livetable.&sourceParams.queryFilters=currentlanguage%2Chidden&properties=logger&properties=level&properties=actions&offset=0&limit=15&sort=logger&descending=

My web.config for reverse proxy

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules useOriginalURLEncoding="false">
                <clear />
                <rule name="Redirect to Https" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
                </rule>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{UNENCODED_URL}" pattern="/(.*)" />
                    </conditions>
                    <action type="Rewrite" url="http://mytomcat_server_fqdn:8080/{C:1}" logRewrittenUrl="false" />
                </rule>
            </rules>
            <outboundRules>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
        <security>
            <requestFiltering allowDoubleEscaping="true">
   <requestLimits maxAllowedContentLength="3521478366" />
                <hiddenSegments>
                    <remove segment="bin" />
                </hiddenSegments>
            </requestFiltering>
        </security>
    </system.webServer>
    <system.web>
  <httpRuntime requestPathInvalidCharacters="" relaxedUrlToFileSystemMapping="true"/>     
        <authentication mode="Windows" />
        <identity impersonate="false" />
    </system.web>
</configuration>

Tomcat server.xml (only modified config sections)

<Connector
           port="8080"
           protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           compression="on"
           compressableMimeType= "text/html,text/xml,text/plain,text/css,text/javascript,application/javascript">
   </Connector>

<Engine name="Catalina" defaultHost="localhost">
  <Valve className="org.apache.catalina.valves.RemoteIpValve"
    internalProxies="127\.0\.[0-1]\.1"
    remoteIpHeader="x-forwarded-for"
    requestAttributesEnabled="true"
    protocolHeader="x-forwarded-proto"
    protocolHeaderHttpsValue="https"></Valve>
    .
    .
    .
 </Engine>

Is there anything I am missing? Anything I need to do on IIS or Tomcat side?
Please let me know if any other information needed on installation and something that I can try out.

Not sure if it’ll help you but this is what we found when using IIS as reverse proxy.

Though we weren’t using IIS to do the re-writing and instead used URL Rewrite Filter and it looks like you’ve done the same as us with double escaping and invalid characters.

Do you mind sharing your web.config?
Any other things changed related to reverse proxy in xwiki.config or xwiki.properties?
I appreciate your response.
Thanks