Jed - thank you for the information. You've shared what you know and are clear where your knowledge ends, and that's all too rare.
All - I'm going to continue to try and work out here how to make this work, since I can't believe I'm the only person on the planet who wants to access TW-Bob from the Internet via an Apache front-end. Maybe I'll get a pointer from someone. If not, then at least there's a record for the next guy (if I succeed). I need to stick with Apache because I have one IP address and I have a bunch of Apache-driven sites using subdomains and vhosts, and I want to add Bob to that mix.
I server the wiki on
https://my.domain.com/ (from "/"). I put Fiddler on it. (I'm on a Mac. Fiddler-Mac exists but it's lame compared with real Fiddler.) I see the request:
Upgrade: websocket
Connection: Upgrade
and the response should include:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
but the actual response is is simply a status 200 with a re-download of the full TW web page. Clearly, the request to create the WebSocket isn't recognized somewhere on the end-to-end path.
The trace is with HTTPS authentication turned off on
my.domain.com, so I'm not dealing with an authentication problem.
My apache config for this host looks like:
<VirtualHost *:443>
ProxyRequests Off
ProxyPreserveHost on
Include certificate-stuff.conf
AllowEncodedSlashes On
SSLEngine On
SSLProxyEngine On
###### Adding WebSockets ######
###### Finished WebSockets #######
</VirtualHost>
/etc/apache2/mods-enabled/proxy_wstunnel.load contains a LoadModule for proxy_wstunnel_module, so I should be set up to proxy websockets. I think the problem is happening BEFORE that point, because the REQUEST to engage websockets is getting missed.
WebSockets *can* work on this host, because I have another site successfully using them via:
ProxyPassMatch (.*)(\/websocket)$ "ws://localhost:81/$1$2"
I observe that the successful site has Apache proxying both http and ws on the same port, so Bob ought to be able to work with 1 port for both protocols. I do see that the successful site has a way to distinguish between http and ws traffic -- their site puts 'websocket' in its WebSocket URLs, but as I said earlier, Bob's *request* to go to ws is getting ignored, not ws traffic itself.
I'm a little worried about these two directives conflicting:
I don't know enough to be sure, but I don't see a way for Apache to distinguish whether "/" should be proxied as http or https.