Websocket com Apache 2.4.52 e Ubuntu

Websocket com Apache 2.4.52 e Ubuntu

Estou tentando seguir o tutorial localizado aqui para sistema de mensagens usando RatChet PHP https://www.twilio.com/blog/create-php-websocket-server-build-real-time-even-driven-application Eu tenho meu domínio chamado example.com, que possui uma página HTML normal e precisa servi-lo como um site normal. para sistema de mensagens, quero uma porta chamada 8445

então eu instalei o apache2 no ubuntu 22.04 instalado, permite criptografar o site SSL está funcionando bem

Agora eu quero configurar o servidor websocket para abrir a porta tcp 8445 no firewall

módulos apache habilitados

proxy a2enmod a2enmod proxy_http a2enmod proxy_wstunnel

Substituí meu domínio original por example.com

meu arquivo conf é como example.com.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/public_html/logs/error.log
    CustomLog /var/www/example.com/public_html/logs/access.log combined

        ProxyRequests Off
        ProxyPass / https://example.com:8445/
        ProxyPassReverse / https://example.com:8445/

</VirtualHost>

e

exemplo.com-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    SSLEngine On
    SSLProxyEngine On
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/public_html/logs/error.log
    CustomLog /var/www/example.com/public_html/logs/access.log combined

        ProxyRequests Off
        ProxyPass / wss://example.com:8445/
        ProxyPassReverse / https://example.com:8445/


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Location />
        ProxyPassReverse /

        Options FollowSymLinks
        Require all granted
    </Location>

</VirtualHost>
</IfModule>

Quando tento me conectar, recebo o erro 503 e o log do Apache está dizendo algo como

[proxy_http:error] [pid 20090] [cliente 49.34.XX:55961] AH01114: HTTP: falha ao fazer conexão com back-end: example.com [sábado, 03 de dezembro 16:47:04.378489 2022] [proxy:error] [pid 20091 ] (111) Conexão recusada: AH00957: wss: tentativa de conexão com 45.33.XX:8445 (example.com) falhou

Deixe-me saber se alguém aqui pode me ajudar a resolver o problema.

Obrigado!

Responder1

Parece que o problema é que o proxy Apache não está conseguindo se conectar ao servidor backend na porta 8445. Há algumas coisas que você pode verificar para solucionar isso:

Verifique se o servidor websocket está rodando e escutando na porta 8445. Você pode usar o comando netstat para verificar isso:

sudo netstat -tlnp | grep 8445

Se o servidor websocket estiver em execução, você verá uma linha semelhante a esta:

tcp        0      0 0.0.0.0:8445            0.0.0.0:*               LISTEN      <websocket server PID>/websocket

Verifique se não há firewalls ou grupos de segurança bloqueando o tráfego para a porta 8445. Você pode verificar isso tentando se conectar ao servidor websocket a partir do próprio servidor:

telnet localhost 8445

Se a conexão for bem-sucedida, você verá uma tela em branco. Se a conexão for recusada, pode haver um firewall ou grupo de segurança bloqueando o tráfego.

Verifique se o servidor websocket está configurado para aceitar conexões do proxy Apache. Dependendo do servidor websocket que você está usando, isso pode envolver a configuração de um endereço IP ou nome de host específico para escutar ou a configuração de listas de controle de acesso (ACLs) para permitir conexões do endereço IP do servidor Apache.

Verifique os logs do servidor websocket para ver se há alguma mensagem de erro indicando por que a conexão está sendo recusada.

informação relacionada