A diretiva ProxyPassMatch não é compatível, pois ela só é compatível com o caminho da URL, não com a string de consulta anexada, como você está tentando fazer.
Para coincidir com a string de consulta e fazer o proxy, você pode usar mod_rewrite, por exemplo:
RewriteCond %{QUERY_STRING} (^|&)type=player(&|$)
RewriteCond %{QUERY_STRING} (^|&)EIO=3(&|$)
RewriteCond %{QUERY_STRING} (^|&)transport=websocket(&|$)
RewriteCond %{QUERY_STRING} (^|&)sid=
RewriteRule ^/(.*) ws://127.0.0.1:3000/socket.io/$1 [P,QSA]
Ou algo parecido. Consulte os documentos do mod_rewrite para obter detalhes, em particular o Sinalizador RewriteRule P . Usar várias condições em QUERY_STRING
em vez de uma permite que os parâmetros correspondam em qualquer ordem.
Isso só faz o equivalente da diretiva ProxyPass
. Se você precisar de ProxyPassReverse
também, no Apache 2.4 você pode adicionar Diretrizes de cabeçalho com expressões :
Header edit Location backend frontend "expr=%{QUERY_STRING} =~ /(^|&)type=player(&|$)/ & ..."
e assim por diante, onde backend
e frontend
são regexes para as URLs dos servidores back e front end, respectivamente. E da mesma forma para os cabeçalhos Content-Location
e URI
. No Apache 2.2, o equivalente da expressão é usar o RewriteRule
para definir uma variável de ambiente e adicionar uma cláusula env
à diretiva Header
.
Veja também Configurando o Apache2 para o proxy WebSocket? .