Prerequisites:
- You must install the required extensions for URL Rewrite and APR in Microsoft IIS.
Url-Rewrite-Download
Application-Request-Routing-Download - This guide assumes you are using Microsoft IIS 7
Setup the Reverse Proxy
Step 1: Creating a Server Certificate
Note: Step 1 only needs to be done if you don't have an SSL cert for your server already.
1. First step is to create a SSL cert for the VisibleThread Doc server via Microsoft IIS
Open your Microsoft IIS server and navigate to the "Server Certificates" node and double click it.
2. In the pane on the right hand side of the window you will see options for creating an SSL cert. For this example I will use a Self-Signed Certifiacte.
3. Click on "Create Self-Signed Certificate" it will prompt you for a friendly name for the cert. Choose a name and hit "ok" and your cert is created.
Step 2: Creating a Web-Site
1. To create a Web-Site click navigate to "Sites" in the left pane.
2. After clicking on "Sites" you will see "Add Web Site…." In the pane on the right.
3. Click on "Add Web Site…." A window will prompt you for information for your new site.
4. Click "ok" once all relevant information is filled out. Your site is now created. Note, if you want public access to your VT Docs application set the I.P as "All Unassigned"
Step 3: Setting up the reverse proxy
1. To set up the reverse proxy navigate to your new Web-Site and double click on it, this will open all available nodes for your site. Double click on "URL Rewrite".
2. After opening "URL Rewrite" add a new rule by going to the pane on the right and clicking on "Add Rule(s)…."
3. Now choose the "Reverse Proxy" option and click "ok"
4. Address must be localhost:8080 "Enable SSL Offloading" box is ticked. Click "ok".
Step 4: Setting up SSL encryption and port 443
1. To set up SSL encryption and port 443 we just need to add a new binding. Navigate to your Web-Site and you will see in the right pane "Bindings…." Click on this.
2. A window will open and prompt click "Add...". Where it says "http" this is a drop down click here and select "https". Leave it All Unassigned, the default port should be set to 443. At the bottom of the window there is another drop down menu for you to select which SSL cert you wish to use, select your cert. Now click "ok".
Preserve Host Headers
Using "Configuration Editor" on the server level, edit the proxy setting to "Preserve Host Headers"
Under the "system.webServer/proxy" change "PerserveHostHeaders" to True
Increase Request Limit
Some of the URLs created by the application will exceed the character limit of IIS. To resolve this you must increase the limit. You can do this by clicking on "Request Filtering" in your site.
Next, click on "Edit Feature Settings"
Lastly, double the default values to match below. Click OK then restart the site.
Enable HTTP_X_FORWARDED
Open "URL Rewrite" on the server level in your IIS manager, then click "View Server Variables"
Click "ADD" and create the three variables shown in the screenshot below.
HTTP_X_FORWARDED_HOST
HTTP_X_FORWARDED_SCHEMA
HTTP_X_FORWARDED_PROTO
Now from your site open "URL Rewrite" and double click your existing ReverseProxy rule to edit it. Under "Server Variables" click "Add..." and the variables you created above should be available in the drop-down menu.
The Values of the Variables should be:
HTTP_X_FORWARDED_HOST {HTTP_HOST}
HTTP_X_FORWARDED_SCHEMA https
HTTP_X_FORWARDED_PROTO https
Set up HTTP -> HTTPS redirection
By default, after completing the IIS Reverse Proxy setup, VT Docs is available on Port 80 (HTTP) and Port 443 (HTTPS). In many cases it may be more desirable to redirect HTTP traffic to HTTPS to enforce encryption. The following steps will set up this redirection.
1. Add a new Blank URL Rewrite Rule:

2. Set the name. Set the pattern to (.*)

3. Setup the following Condition:

4. Setup the following Action:

5. Save the new rule
Adjust the rule order so that this rule is first:
6. Restart the site and test
You may need to clear your browser cache for tests to succeed. The site should now be browsable via http://<your-url> or https://<your-url>, redirecting HTTP -> HTTPS automatically.