Estoy trabajando con sockets web. En apache, puedo redirigir de https a http haciendo la siguiente configuración en el archivo de configuración:
<VirtualHost *:443> # Common SSL Config ServerName ec2-13-52-248-221.us-west-1.compute.amazonaws.com SSLEngine on # wss redirects to working ws protocol SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key ProxyPass "/" "http://ec2-13-52-248-221.us-west-1.compute.amazonaws.com" retry=0 keepalive=On </VirtualHost>Pero la misma configuración (como arriba) cambio de la siguiente manera
<VirtualHost *:443> # Common SSL Config ServerName ec2-13-52-248-221.us-west-1.compute.amazonaws.com SSLEngine on # wss redirects to working ws protocol SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key ProxyPass "/wss" "ws://ec2-13-52-248-221.us-west-1.compute.amazonaws.com:8080" retry=0 keepalive=On </VirtualHost>No puedo redirigir de wss a ws
En el caso de Wss, estoy usando la siguiente URL al enviar la solicitud:
wss://ec2-13-52-248-221.us-west-1.compute.amazonaws.com:8080/wssDespués de 24 horas de esfuerzo, finalmente obtuve la solución: esta configuración funcionó para mí.
Primero cargue los siguientes módulos habilitando estos módulos en el archivo httpd.conf en Windows
proxy_wstunnel_module modules/mod_proxy_wstunnel.soEn Linux, puede habilitar estos módulos siguiendo los comandos
sudo a2enmod proxy proxy_balancer proxy_wstunnel proxy_httpLuego simplemente agregue las siguientes líneas al archivo apache.conf o al archivo httpd-vhosts.conf
RewriteEngine on ProxyRequests Off ProxyPreserveHost on ProxyPass /ws ws://192.168.43.31:8080 retry=0 keepalive=On ProxyPassReverse /ws ws://192.168.43.31:8080 retry=0En los cambios de archivo de Javascript son así:
if(location.protocol === 'http:'){ var conn = new WebSocket('ws://192.168.43.31/ws'); } else{ var conn = new WebSocket('wss://192.168.43.31/ws'); }entonces, desde este apache redirigirá todas las solicitudes que tengan ws al puerto 8080