Recentemente tive quase exatamente o mesmo problema. Funcionou com HTTP e WS, mas quando mudei para HTTPS e WSS, ele parou de funcionar. Eu brinquei um pouco e, de alguma forma, dei certo. Esta é minha configuração de trabalho:
<VirtualHost *:443>
ServerName blabla
#SSL-stuff
...
# I don't think this is important but it's there
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# Here's the fun stuff
<Location />
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://localhost:3002%{REQUEST_URI} [P,L]
ProxyPass http://localhost:3001/
ProxyPassReverse http://localhost:3001/
</Location>
</VirtualHost>
Não é tão diferente do seu. Em vez de procurar o caminho e a string de consulta do websocket, ele procura os cabeçalhos Upgrade e Connection na solicitação HTTP, que informa que isso deve se tornar um websocket.
Os parâmetros de URL e consulta serão processados pelo seu aplicativo
Desculpe, não posso dizer exatamente o que está errado, mas espero que minha configuração funcione no seu caso também