A conexão do websocket do Meteor falhou usando o apache

0

Eu implantei um aplicativo Meteor em uma gota do DO usando o MeteorUp. Eu configurei os Hosts Virtuais do Apache para este site assim:

<VirtualHost *:80>
    ServerName filipe-garcia.com
    ServerAlias www.filipe-garcia.com

    ServerAdmin [email protected]
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/sockjs/           [NC]
    RewriteCond %{QUERY_STRING} transport=websocket [NC]
    RewriteRule /sockjs/ ws://localhost:3000/$1     [P,L]

    ProxyPreserveHost On
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Mas ainda estou recebendo um

WebSocket connection to 'ws://filipe-garcia.com/sockjs/622/9hwpvs81/websocket' failed: Error during WebSocket handshake: Unexpected response code: 400

erro no meu console. Eu pesquisei isso e encontrei uma infinidade de soluções (na maioria variações deste mesmo VHosts), sem sucesso em nenhum.

Tudo parece estar funcionando perfeitamente, exceto por esse erro (que eu ainda não senti nada por causa disso, porque este aplicativo não está contando com websockets ainda).

Não sei como devo corrigir isso. Estou executando o Apache 2.4.7 no Ubuntu 32bits e tenho proxy, proxy_connect, proxy_http, proxy_wstunnel ativado.

EDIT : Deve ter algo a ver com a maneira como o proxy está configurado, porque se eu apontar meu navegador para a máquina e a porta estiver rodando diretamente, esse erro não acontece. / p>

Como uma minúscula questão bônus , usando um servidor nodejs, devo remover a linha DocumentRoot do arquivo ou apenas deixá-la lá?

Obrigado.

    
por fgarci03 27.11.2015 / 13:13

1 resposta

0

Para mim .. simplesmente adicionando o seguinte para ..sites-enabled .. (ubuntu + apache) funcionou para mim:

ProxyRequests off
   <Proxy *>
    Order deny,allow
    Allow from all
   </Proxy>

   <Location />
    ProxyPass http://localhost:3000/
    ProxyPassReverse http://localhost:3000/
   </Location>

Certifique-se de adicionar sites habilitados e não disponíveis para sites

    
por 02.12.2015 / 18:42