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.