Websocket con Apache 2.4.52 y Ubuntu

Websocket con Apache 2.4.52 y Ubuntu

Estoy intentando seguir el tutorial ubicado aquí para el sistema de mensajería usando RatChet PHP. https://www.twilio.com/blog/create-php-websocket-server-build-real-time-even-driven-application Tengo mi dominio llamado example.com que tiene una página html normal y necesito servirlo como un sitio web normal. Para el sistema de mensajería, quiero que el puerto se llame 8445.

así que instalé apache2 en ubuntu 22.04, el sitio lets encrypt ssl está funcionando bien

Ahora quiero configurar el servidor websocket, así que abrí el puerto tcp 8445 en el firewall

módulos apache habilitados

proxy a2enmod proxy a2enmod_http proxy a2enmod_wstunnel

He reemplazado mi dominio original con ejemplo.com

mi archivo de configuración es 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>

y

ejemplo.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>

Cuando intento conectarme, aparece el error 503 y el registro de Apache dice como

[proxy_http:error] [pid 20090] [cliente 49.34.XX:55961] AH01114: HTTP: no se pudo establecer la conexión con el backend: ejemplo.com [sábado 03 de diciembre 16:47:04.378489 2022] [proxy:error] [pid 20091 ] (111) Conexión rechazada: AH00957: wss: falló el intento de conexión a 45.33.XX:8445 (example.com)

Avíseme si alguien aquí puede ayudarme a resolver el problema.

¡Gracias!

Respuesta1

Parece que el problema es que el proxy Apache no logra conectarse al servidor backend en el puerto 8445. Hay algunas cosas que puedes verificar para solucionar este problema:

Verifique que el servidor websocket se esté ejecutando y escuchando en el puerto 8445. Puede usar el comando netstat para verificar esto:

sudo netstat -tlnp | grep 8445

Si el servidor websocket se está ejecutando, debería ver una línea similar a esta:

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

Verifique que no haya firewalls o grupos de seguridad que bloqueen el tráfico al puerto 8445. Puede verificar esto intentando conectarse al servidor websocket desde el propio servidor:

telnet localhost 8445

Si la conexión se realiza correctamente, debería ver una pantalla en blanco. Si se rechaza la conexión, es posible que haya un firewall o un grupo de seguridad que bloquee el tráfico.

Verifique que el servidor websocket esté configurado para aceptar conexiones desde el proxy Apache. Dependiendo del servidor websocket que esté utilizando, esto puede implicar configurar una dirección IP específica o un nombre de host para escuchar, o configurar listas de control de acceso (ACL) para permitir conexiones desde la dirección IP del servidor Apache.

Verifique los registros del servidor websocket para ver si hay algún mensaje de error que indique por qué se rechaza la conexión.

información relacionada