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.