GNU/Linux >> Tutoriales Linux >  >> Linux

Configurar Apache para WebSockets mediante proxy inverso

Usé WebSockify en mi aplicación web para conectarme al servidor VNC usando noVNC para habilitar el acceso remoto a los servidores Linux a través del navegador. Fue una implementación fácil ya que no hubo firewall involucrado y se abrió el puerto WebSocket. Sin embargo, recientemente tuve que migrar a otro servidor que estaba detrás de un firewall y no quería abrir el puerto, ya que podría poner en riesgo todo el sistema. En este artículo, implementaremos WebSockify a través de Apache Reverse Proxy.

¿Qué es noVNC?

noVNC es un cliente HTML para VNC. Usando noVNC, puede conectarse a un servidor VNC desde un navegador.

¿Por qué WebSockify?

WebSockify traduce el tráfico de WebSockets al tráfico de socket normal. Websockify acepta el protocolo de enlace de WebSockets, lo analiza y luego comienza a reenviar el tráfico entre el cliente y el objetivo en ambas direcciones.

Foto cortesía:datawookie.dev

Suposición:

Se supone que tanto su WebSockify como el servidor web Apache se ejecutan en el mismo host.

Configuración:

  • Apache v2.4
  • WebSockify para WebSockets en el puerto 6080
  • sin VNC instalado
  • servidor remoto que ejecuta VNC
  • CentOS Linux 7.9

Nota: No entraremos en detalles sobre cómo configurar WebSockify con noVNC y VNC.

Configurar Apache Reverse Proxy para Websockets

Paso 1: Asegúrese de que los siguientes módulos estén habilitados en Apache /etc/httpd/conf.modules.d/ carpeta.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so

Paso 2: Cree un VirtualHost que tenga ReverseProxy y reescriba las reglas de la siguiente manera:

URL de la aplicación Websockify

WebSockify se ejecuta en el puerto 6080 y se puede acceder a él a través de la URL:https://localhost:6080

<VirtualHost *:80>
  ServerName techglimpse.com
  
  ProxyRequests on
  RequestHeader set X-Forwarded-Proto "http"	
  ProxyPass /console https://localhost:6080/
  ProxyPassReverse /console https://localhost:6080/  

  RewriteEngine on
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
  RewriteRule .* ws://localhost:6080%{REQUEST_URI} [P]
  
</VirtualHost>

Paso 3: Reinicie el servidor web Apache

# systemctl restart httpd


Linux
  1. Una guía para ejecutar un proxy inverso para HTTP(S), SSH y MySQL/MariaDB usando NGINX

  2. Configurar Apache Traffic Server como proxy inverso en Linux

  3. Usando mod_cluster en Apache

  4. Uso de HTTPS como servidor proxy en Apache 2.4

  5. Configurar Apache para terminación SSL en un Cloud Load Balancer

Cómo configurar Nginx como proxy inverso para Apache en Debian 11

¿Cómo configurar el proxy inverso de Nginx en Plesk?

NGINX como proxy inverso para aplicación de nodo o angular

Cómo configurar Nginx como proxy inverso para Apache en Ubuntu 18.04 VPS

Cómo configurar Apache como servidor proxy frontend para Node.js CentOS 8

Cómo instalar NGINX como proxy inverso para Apache en Ubuntu 18.04