My Viewport doesn't work with a proxy server setup
Symptom
If your Confluence installations runs behind a reverse-proxy or load balancer, you should make sure that both Confluence and the proxy are configured correctly. Some advanced setups, for example running a viewport on a different domain than Confluence, require that values like the URL scheme, the server name, and the server port are correctly passed to the viewport by Tomcat, the enclosing container.
PDF or Word exports from within viewports cannot be downloaded if the viewport domain is different from the Confluence base URL’s domain
Common effects of an incomplete configuration are:
Viewports with a custom domain name are not reachable
Confluence rejecting certain requests whose server name does not match the name of the host.
For example: POST requests to
/rest/webResources/1.0/resources
that fail with a status code of 403
Learn more about how to setup custom domains and reverse proxies in Viewport.
Scroll Viewport Proxy Debugger
Scroll Viewport offers a proxy debugger UI which helps you to debug your proxy settings.
You can reach the proxy debugger via:
<confluence-base-url>/plugins/servlet/scroll-viewport/proxy-debugger
Example output
The debugger UI will output information about the following settings for example like this:
Value = the current value Viewport receives.
Expected = the value Viewport expects to receive.
Key | Value | Expected | Status |
---|---|---|---|
request.getScheme | http | http | Match |
request.getProtocol | HTTP/1.1 | ||
request.isSecure | false | false | Match |
request.getServerName | localhost | localhost | Match |
request.getServerPort | 8090 | 8090 | Match |
request.getContextPath | |||
request.getRequestURI | /plugins/servlet/scroll-viewport/proxy-debugger | ||
request.getLocalAddr | 0:0:0:0:0:0:0:1 | ||
request.getLocalPort | 8090 | ||
request.getRemoteHost | 0:0:0:0:0:0:0:1 | ||
request.getRemoteAddr | 0:0:0:0:0:0:0:1 | ||
request.getRemotePort | 60331 | ||
Header: accept-encoding | gzip, deflate, br | ||
Header: accept-language | en-US,en;q=0.9,de-DE;q=0.8,de;q=0.7 | ||
Header: connection | keep-alive | ||
Header: host | localhost:8090 | localhost:8090 | Match |
Header: sec-ch-ua | "Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99" | ||
Header: sec-ch-ua-mobile | ?0 | ||
Header: sec-fetch-dest | document | ||
Header: sec-fetch-mode | navigate | ||
Header: sec-fetch-site | none | ||
Header: sec-fetch-user | ?1 | ||
Header: upgrade-insecure-requests | 1 |