GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konfigurieren Sie Apache für WebSockets mit Reverse Proxy

Ich habe WebSockify in meiner Webanwendung verwendet, um mit noVNC eine Verbindung zum VNC-Server herzustellen, um den Fernzugriff auf Linux-Server über den Browser zu ermöglichen. Es war eine einfache Implementierung, da keine Firewall beteiligt war und der WebSocket-Port geöffnet war. Kürzlich musste ich jedoch auf einen anderen Server migrieren, der sich hinter einer Firewall befand, und ich wollte den Port nicht öffnen, da dies das gesamte System gefährden könnte. In diesem Artikel implementieren wir WebSockify über Apache Reverse Proxy.

Was ist noVNC?

noVNC ist ein HTML-Client für VNC. Mit noVNC können Sie von einem Browser aus eine Verbindung zu einem VNC-Server herstellen.

Warum WebSockify?

WebSockify übersetzt WebSockets-Datenverkehr in normalen Socket-Datenverkehr. Websockify akzeptiert den WebSockets-Handshake, analysiert ihn und beginnt dann mit der Weiterleitung des Datenverkehrs zwischen dem Client und dem Ziel in beide Richtungen.

Bild mit freundlicher Genehmigung:datawookie.dev

Annahme:

Es wird davon ausgegangen, dass sowohl Ihr WebSockify als auch der Apache-Webserver auf demselben Host ausgeführt werden.

Einrichtung:

  • Apache v2.4
  • WebSockify für WebSockets auf Port 6080
  • kein VNC installiert
  • Remote-Server mit VNC
  • CentOS Linux 7.9

Hinweis: Wir werden nicht im Detail darauf eingehen, wie WebSockify mit noVNC &VNC konfiguriert wird.

Apache Reverse Proxy für Websockets konfigurieren

Schritt 1: Stellen Sie sicher, dass die folgenden Module in Apache /etc/httpd/conf.modules.d/ aktiviert sind Ordner.

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

Schritt 2: Erstellen Sie wie folgt einen VirtualHost mit ReverseProxy- und Rewrite-Regeln:

Websockify-Anwendungs-URL

WebSockify läuft auf Port 6080 und ist über die URL erreichbar: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>

Schritt 3: Starten Sie den Apache-Webserver neu

# systemctl restart httpd


Linux
  1. Eine Anleitung zum Ausführen eines Reverse-Proxys für HTTP(S), SSH und MySQL/MariaDB mit NGINX

  2. Richten Sie Apache Traffic Server als Reverse Proxy unter Linux ein

  3. Verwenden von mod_cluster in Apache

  4. Verwendung von HTTPS als Proxy-Backend in Apache 2.4

  5. Konfigurieren Sie Apache für die SSL-Beendigung auf einem Cloud Load Balancer

So richten Sie Nginx als Reverse Proxy für Apache unter Debian 11 ein

Wie konfiguriere ich den Nginx-Reverse-Proxy auf Plesk?

NGINX als Reverse Proxy für Node- oder Angular-Anwendungen

So richten Sie Nginx als Reverse Proxy für Apache auf Ubuntu 18.04 VPS ein

So richten Sie Apache als Frontend-Proxy-Server für Node.js CentOS 8 ein

So installieren Sie NGINX als Reverse Proxy für Apache unter Ubuntu 18.04