It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Confluence Behind IIS Reverse Proxy

Hello all,

Recently the company I work for finished evaluating Confluence for several months and decided that we wanted to purchase.  Unfortunately, during this time I was unable to test setting up the server to run behind IIS which is a requirement now.  I've spent hours mulling over my setup, and after following all the guides I'm conceding defeat.  The Apache application server was working fine on HTTP hitting .  The Server Base URL is still set to that.  Originally I was just getting the IIS splashpage, and never got to the point of seeing the actual Confluence page via IIS.  At this point I'm getting error 502

Web server received an invalid response while acting as a gateway or proxy server. 

when navigating to  I'm running Conflunece 6.8 on Windows Server 2012 R2 with IIS 8.5.  Below is what I have in my C:\ajp_iis\

# Configuration file for the Jakarta ISAPI Redirector

# The path to the ISAPI Redirector Extension, relative to the website
# This must be in a virtual directory with execute privileges

# Full path to the log file for the ISAPI Redirector

# Log level (debug, info, warn, error or trace)

# Full path to the file

# Full path to the file



# - IIS


# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
# The workers that jk should create and work with


# Defining a worker named ajp13w and of type ajp13
# Note that the name and the type do not have to match.

# Define status worker



<?xml version="1.0" encoding="UTF-8"?>
<clear />
<rule name="Synchrony HTTP" stopProcessing="true">
<match url="synchrony/(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8091/synchrony/{R:1}" />
<rule name="Synchrony Web Sockets Reverse Proxy" stopProcessing="true">
<match url="ws://(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="ws://localhost:8091/{R:1}" />
<rule name="Confluence Reverse Proxy" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8090/{R:1}" />
<!-- This keeps IIS from complaining about special characters in the url. Also has some controls for max upload size. Set to the equivalent of the above, but in kilobytes instead of bytes. (ex. 61440 = 60MB) -->
<httpRuntime executionTimeout="20" maxRequestLength="xxxxx" requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />


This is my server.xml file:


<Server port="8000" shutdown="SHUTDOWN" debug="0">
<Service name="Tomcat-Standalone">
<Connector port="8090" enableLookups="false" redirectPort="8443"
protocol="AJP/1.3" URIEncoding="UTF-8" proxyName="" proxyPort="80" scheme="http" />

<Engine name="Standalone" defaultHost="localhost" debug="0">

<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="false" startStopThreads="4">
<Context path="" docBase="../confluence" debug="0" reloadable="false">
<!-- Logger is deprecated in Tomcat 5.5. Logging configuration for Confluence is specified in confluence/WEB-INF/classes/ -->
<Manager pathname="" />
<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="60" />

<Context path="${confluence.context.path}/synchrony-proxy" docBase="../synchrony-proxy" debug="0" reloadable="false" useHttpOnly="true">
<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="60" />




IIS Setup


Microsoft Application Request Routing 3.0

IIS URL Rewrite Module 2

Web Socket Support

Have the isapi_redirect.dll added under ISAPI and CGI Restrctions.

Default Web Site with isapi_redirect.dll added under ISAPI Filters.

Default Web Site has confluence virtual directory (which I don't think I need because I don't have a context path defined), and jakarta virtual directory that points to C:\ajp_iis\.

I have URL Rewrite configured as described in the last article below, but I'm thinking I might not need this because I'm not accessing the server on a context path?  If I disabled the URL Rewrite rule I just get an IIS splashpage again...

Started this process with:

Then moved to:

Followed up and got confused by the differences in:


I have logs, but I'm not sure which ones you'd want.  Please let me know if there is something else I can provide.

1 answer

0 votes
AnnWorley Atlassian Team Apr 17, 2018

Hi Michael,

We use this doc for IIS now Proxying Atlassian server applications with Microsoft Internet Information Services (IIS). I saw how Google finds those other articles you posted, if you search for Confluence and IIS, but those docs are for confluence 2.1.

Please start over just working off that one doc, I am sure you will have a better experience.



Thank you for the reply Ann!  I am up and running in terms of IIS and Confluence now.  The next issue is Synchrony.  I have websocket support installed and enabled in IIS, and I've edited my web.config to contain the rules explained at the end of that document you sent.  I've also added the line: 


to my Java Options for the Confluence install.  I added "-D" to the front of that line from what I've read that is required for it to be recognized as a system proptery, and if I open up my System Info on the Confluence server I can see the line there.  If I open a page and wait it says the editor didn't start and give me the link to this page:  I've tried's tool and it appears that websockets are being processed.  My next move is to go to HTTPS, but I want to get Synchrony situated first.

I was able to get this working.  I BELIEVE what finally made it work was deleting the in the C:/Program Files/Atlassian/Confluence/temp/ directory.  which I read about in a very hard to find post that I've linked below.  The only other change that I made before it started working was adding a line to the system properties: 

-Dsynchrony.proxy.enabled=false  which from what I understood should tell Tomcat not to use the internal proxy for Synchrony.  I deleted the line and restarted again and it still works which tells me the below fix was what I needed.  I don't know if this is intentional or not, but this issue cost me hours and hours of circling around and quintuple checking everything. 

Synchrony issue.png

Like Areg_Vrtanesyan__Work_ likes this

Thanks for sharing :)

Like Areg_Vrtanesyan__Work_ likes this

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted in Confluence

How is your team having fun and bonding, remotely, utilizing Confluence?

Thanks everyone for answering last week’s question. The winner of the random drawing from those who commented is: @LarryBrock I’ll contact you separately with your prize details. This wee...

276 views 9 6
Join discussion

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you