Saltar al contenido

WebSockets y proxy Apache: ¿cómo configurar mod_proxy_wstunnel?

No olvides que en las ciencias cualquier problema suele tener diversas resoluciones, no obstante nosotros aquí compartimos lo más óptimo y eficiente.

Solución:

Finalmente logré hacerlo, gracias a este tema.

QUE HACER:

1) Tener instalado Apache 2.4 (no funciona con 2.2), y hacer:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel

2) tener nodejs ejecutándose en el puerto 3001

3) Haz esto en la configuración de Apache


  ServerName www.domain2.com

  RewriteEngine On
  RewriteCond %REQUEST_URI  ^/socket.io            [NC]
  RewriteCond %QUERY_STRING transport=websocket    [NC]
  RewriteRule /(.*)           ws://localhost:3001/$1 [P,L]

  ProxyPass / http://localhost:3001/
  ProxyPassReverse / http://localhost:3001/


Nota: si tiene más de un servicio en el mismo servidor que usa websockets, es posible que desee hacer esto para separarlos.

En lugar de filtrar por URL, también puede filtrar por encabezado HTTP. Esta configuración funcionará para cualquier aplicación web que use websockets, incluso si no usan socket.io:


  ServerName www.domain2.com

  RewriteEngine On
  RewriteCond %HTTP:Upgrade =websocket [NC]
  RewriteRule /(.*)           ws://localhost:3001/$1 [P,L]
  RewriteCond %HTTP:Upgrade !=websocket [NC]
  RewriteRule /(.*)           http://localhost:3001/$1 [P,L]

  ProxyPassReverse / http://localhost:3001/

Puede ser será útil. Solo todas las consultas se envían a través de ws al nodo


  ServerName www.domain2.com

  
    ProxyPass "ws://localhost:3001/"
  

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *