[squid-users] Web Socket Support For Reverse Proxy

Dean E. Weimer dweimer at dweimer.net
Fri Jan 4 13:41:27 UTC 2019


On 2019-01-04 1:39 am, Amos Jeffries wrote:
> On 4/01/19 5:48 am, Dean E. Weimer wrote:
>> I am running Squid as a reverse proxy for several internally hosted
>> websites, some HTTP and some HTTPS with wild card cerrtificate. We 
>> have
>> recently setup a Atlassian Confluence Server, and are unable to edit 
>> any
>> documents through the reverse proxy. On inspection of client web 
>> console
>> logs we are receiving the following error.
>> 
>> failed: Error during WebSocket handshake: Unexpected response code: 
>> 200
>> 
> 
> The client software does not support the WebSockets fallback
> mechanism(s) properly.

Searching for Fallback information led me to find part of the issue.


It appears that the Confluence web application is using synchrony to 
handle collaborative editing they wrote their own proxy to proxy the web 
socket requests to the synchrony app from within their app. That proxy 
has a known issue of not supporting the fallback feature. Apparently 
this was reported as a major bug in release notes of the beta version of 
the first 6.0 release and hasn't been addressed. The current 
documentation lists it as supported by default and tells you how to 
disable it if for some reason you don't want to allow fallback support.

<https://jira.atlassian.com/browse/CONFSERVER-44250>

XHR fallback has known issues when synchrony service is accessed via the 
synchrony-proxy web application.

Workaround is to ensure that browser traffic goes direct to synchrony 
instead of being routed via the confluence synchrony-proxy web 
application.


>> I have been searching the Squid documentation and can't find anything 
>> on
>> web sockets. Is it not supported in reverse proxy mode?
> 
> Indeed. 200 status is a "success" response from the origin. The data
> requested is still being delivered, just with HTTP instead of 
> WebSockets.
> 
> 
>> 
>> Currently running Squid 4.3, the cache peer for the specific server 
>> is.
>> 
>> cache_peer 10.20.10.25 parent 8490 0 ssl no-query no-digest 
>> originserver
>> name=confluence_parent sslcapath=/usr/local/share/certs
>> sslflags=DONT_VERIFY_PEER login=PASSTHRU front-end-https=on proxy-only
>> cache_peer_access confluence_parent allow CONFLUENCE SSL
>> cache_peer_access confluence_parent deny all
>> 
>> The confluence server is configured to use a proxy, and is aware that 
>> it
>> is there.
> 
> That could be the problem then. Why does the *server* need configuring
> to *use* a proxy?
> 
> Clients use a proxy to fetch requests. Servers *receive* requests from 
> a
> proxy.

The proxy configuration on the server tells it the hostname and port 
used on the proxy to properly rewrite the links.

> 
> 
> Amos
> _______________________________________________
> squid-users mailing list
> squid-users at lists.squid-cache.org
> http://lists.squid-cache.org/listinfo/squid-users

-- 
Thanks,
    Dean E. Weimer
    http://www.dweimer.net/


More information about the squid-users mailing list