Apache2 WSS-reescrever

1

Tentar minha sorte como StackOverflow não era o lugar certo para perguntar. Espero que seja aqui que minha pergunta pertence!

Eu tenho puxado meu cabelo nos últimos dias para ter websockets para trabalhar com o Apache2.4. Eu finalmente encontrei uma solução que funcionou para mim, a saber:

<VirtualHost *:80>
  ServerName www.domain2.com

  RewriteEngine On
  RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
  RewriteCond %{QUERY_STRING} transport=websocket    [NC]
  RewriteRule /(.*)           ws://localhost:3001/$1 [P,L]

  ProxyPass / http://localhost:3001/
  ProxyPassReverse / http://localhost:3001/
</VirtualHost>

O problema? Bem, assim que mudo para o wss, estou sem sorte. No começo, eu esperava poder mudar apenas para wss acima, mas isso não funcionou, eu ainda recebo um erro 500. O que posso estar perdendo? (Eu uso socket.io e o pedido é assim: wss://xxx.yy/socket.io/?auth=YYY&EIO=3&transport=websocket&sid=XXX

    
por Erik 13.08.2017 / 18:58

1 resposta

1

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

    
por 04.09.2017 / 15:35