Fronting Studio with IIS
- Last Updated: May 13, 2026
- 3 minute read
- Semaphore
- Documentation
Introduction
Often people will want to have Knowledge Model Management accessed via a web server such as Microsoft IIS. This allows users to not have to enter the specific port number and/or obscure URL provided by Apache Tomcat or to configure IIS integrated authentication. The following describes how to install and configure IIS 7.5 on a 64-bit version of Windows to support this.
Note: You must use the following method for configuration of IIS to support Knowledge Model Management as it contains custom changes made to the Tomcat Connector ISAPI Filter that has not yet been implemented in the Apache Tomcat project source code.
Step 1 - Install ARR 3 and URL Rewrite Module 2
Download and install Application Request Routing (ARR) 3.0.
Download and install IIS URL Rewrite Module.
Step 2 - Configure Reverse Proxy URL Rewrite Rules
Open IIS Manager and click on the server node in the left menu.
Open Application Request Routing Cache and then click ‘Server Proxy Settings…’ in the right side menu.
Check the box next to ‘Enable proxy, check that the box next to ’Reverse rewrite host in response headers’ is checked, and uncheck the box next to ‘Enable disk cache’.
Click ‘Apply’ in the right side menu.
Click the arrow to expand ‘Sites’ in the left menu and click on ‘Default Web Site’.
In the Default Web Site Home open ‘URL Rewrite’.
Click ‘Add Rule(s)…’ in the right side menu, then click ‘Blank rule’ under ‘Inbound rules’ in the ‘Select a rule template:’ window, then click ‘OK’.
Fill in the following:
- Name: Display name for the rule (ex. Reverse Proxy for SES)
- Requested URL: Matches the Pattern
- Using: Regular Expressions
- Pattern: ^<path>/(.*) (ex. ^ses/(.*) or ^cs/(.*) or ^pr/(.*) or for Studio (.*))
- Ignore case: checked
- Action type: Rewrite
- Rewrite URL:
http://<semaphorehost>:<port>/{R:1}
- CS <code>http://localhost:5058/{R:1}</code>
- SES <code>http://localost:8983/ses/{R:1}</code>
- PR <code>http://localhost:5091/{R:1}</code>
- Studio <code>http://localhost:5080/{R:1}</code>
- Append query string: checked
- Stop processing of subsequent rules: checked
Click ‘Apply’ to save the configuration.
Repeat steps 9 - 11 for each service you want to configure.
Step 3 - Allow Double Escaping, Longer URIs and Error Propagation
By default, IIS 7 prohibits any URL that contains a ‘+’ character in the URL from being served. It also limits the size of URIs to 2KB. To adjust IIS to overcome these limitations, do the following:
-
In the ‘Connections’ panel, ensure that the IIS Web Site that will be used to proxy Tomcat requests is selected.
-
Double-click the ‘Request Filtering’ icon in ‘Features View’ (If the Request Filtering icon is not displayed, you may need to download the IIS Administration Pack first).

-
Click the ‘Edit Feature Settings’ link in the ‘Actions’ panel.
-
Ensure that the ‘Allow double escaping’ option is selected.
-
Modify ‘Maximum query string’ to 4096

-
Click ‘OK’.
-
Edit the web.config file of the IIS Web Site running the connector. It is located in the root folder of the site. Add the following snippet just before the closing “</configuration>” tag:
<system.web> <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" /> <pages validateRequest="false" /> </system.web> -
We also need to ensure that any error messages passed back from Knowledge Model Management to the client are respected (these are legitimate and contain useful information, such as when a constraint would be broken if the user’s request were to be honoured. To do this add to the <system.webServer> element, the child element
<httpErrors existingResponse="PassThrough" />An example web.config file now looks like:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <security> <requestFiltering allowDoubleEscaping="true"> <requestLimits maxQueryString="4096" /> </requestFiltering> </security> <httpErrors existingResponse="PassThrough" /> </system.webServer> <system.web> <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" /> <pages validateRequest="false" /> </system.web> </configuration> -
Perform an IIS reset (from the command prompt execute the command “iisreset”).