GNU/Linux >> Linux Esercitazione >  >> Linux

Configura Apache per WebSocket usando il proxy inverso

Ho usato WebSockify nella mia applicazione Web per connettermi al server VNC utilizzando noVNC per abilitare l'accesso remoto ai server Linux tramite il browser. È stata un'implementazione semplice in quanto non era coinvolto il firewall e la porta WebSocket è stata aperta. Tuttavia, recentemente ho dovuto migrare su un altro server che si trovava dietro un firewall e non volevo aprire la porta in quanto potrebbe mettere a rischio l'intero sistema. In questo articolo, implementeremo WebSockify tramite Apache Reverse Proxy.

Cos'è noVNC?

noVNC è un client HTML per VNC. Usando noVNC, puoi connetterti a un server VNC da un browser.

Perché WebSockify?

WebSockify converte il traffico WebSocket in traffico socket normale. Websockify accetta l'handshake WebSockets, lo analizza e quindi inizia a inoltrare il traffico tra il client e la destinazione in entrambe le direzioni.

Foto per gentile concessione:datawookie.dev

Assunzione:

Si presume che sia WebSockify che il server Web Apache siano in esecuzione sullo stesso host.

Configurazione:

  • Apache v2.4
  • WebSockify per WebSocket sulla porta 6080
  • noVNC installato
  • Server remoto che esegue VNC
  • CentOS Linux 7.9

Nota: Non entreremo nei dettagli su come configurare WebSockify con noVNC e VNC.

Configura proxy inverso Apache per Websocket

Passaggio 1: Assicurati che i moduli seguenti siano abilitati in Apache /etc/httpd/conf.modules.d/ cartella.

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

Passaggio 2: Crea un VirtualHost con ReverseProxy e Rewrite regole come di seguito:

URL dell'applicazione Websockify

WebSockify è in esecuzione sulla porta 6080 ed è accessibile tramite l'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>

Passaggio 3: Riavvia il server web Apache

# systemctl restart httpd


Linux
  1. Una guida all'esecuzione di un proxy inverso per HTTP(S), SSH e MySQL/MariaDB utilizzando NGINX

  2. Configura Apache Traffic Server come proxy inverso su Linux

  3. Utilizzo di mod_cluster in Apache

  4. Utilizzo di HTTPS come backend proxy in Apache 2.4

  5. Configura Apache per la terminazione SSL su un Cloud Load Balancer

Come configurare Nginx come proxy inverso per Apache su Debian 11

Come configurare il proxy inverso Nginx su Plesk?

NGINX come proxy inverso per applicazioni Node o Angular

Come configurare Nginx come proxy inverso per Apache su Ubuntu 18.04 VPS

Come configurare Apache come server proxy frontend per Node.js CentOS 8

Come installare NGINX come proxy inverso per Apache su Ubuntu 18.04