GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer Apache pour WebSockets à l'aide du proxy inverse

J'ai utilisé WebSockify dans mon application Web pour me connecter au serveur VNC en utilisant noVNC pour permettre l'accès à distance aux serveurs Linux via le navigateur. C'était une implémentation facile car il n'y avait pas de pare-feu impliqué et le port WebSocket était ouvert. Cependant, récemment, j'ai dû migrer vers un autre serveur qui était derrière un pare-feu et je ne voulais pas ouvrir le port car cela pourrait mettre en danger l'ensemble du système. Dans cet article, nous allons implémenter WebSockify via Apache Reverse Proxy.

Qu'est-ce qu'un noVNC ?

noVNC est un client HTML pour VNC. En utilisant noVNC, vous pouvez vous connecter à un serveur VNC à partir d'un navigateur.

Pourquoi WebSockify ?

WebSockify traduit le trafic WebSockets en trafic socket normal. Websockify accepte la poignée de main WebSockets, l'analyse, puis commence à transférer le trafic entre le client et la cible dans les deux sens.

Photo courtoisie :datawookie.dev

Hypothèse:

Il est supposé que votre WebSockify et le serveur Web Apache s'exécutent sur le même hôte.

Configuration :

  • Apache v2.4
  • WebSockify pour WebSockets sur le port 6080
  • pas de VNC installé
  • serveur distant exécutant VNC
  • CentOS Linux 7.9

Remarque : Nous n'entrerons pas dans les détails sur la configuration de WebSockify avec noVNC &VNC.

Configurer le proxy inverse Apache pour les Websockets

Étape 1 : Assurez-vous que les modules ci-dessous sont activés dans Apache /etc/httpd/conf.modules.d/ dossier.

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

Étape 2 : Créez un VirtualHost avec les règles ReverseProxy et Rewrite comme ci-dessous :

URL de l'application Websockify

WebSockify s'exécute sur le port 6080 et est accessible via 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>

Étape 3 : Redémarrez le serveur Web Apache

# systemctl restart httpd


Linux
  1. Guide d'exécution d'un proxy inverse pour HTTP(S), SSH et MySQL/MariaDB à l'aide de NGINX

  2. Configurer Apache Traffic Server en tant que proxy inverse sous Linux

  3. Utilisation de mod_cluster dans Apache

  4. Utilisation de HTTPS comme backend proxy dans Apache 2.4

  5. Configurer Apache pour la terminaison SSL sur un Cloud Load Balancer

Comment configurer Nginx en tant que proxy inverse pour Apache sur Debian 11

Comment configurer le proxy inverse Nginx sur plesk ?

NGINX en tant que proxy inverse pour l'application Node ou Angular

Comment configurer Nginx en tant que proxy inverse pour Apache sur Ubuntu 18.04 VPS

Comment configurer Apache en tant que serveur proxy frontal pour Node.js CentOS 8

Comment installer NGINX en tant que proxy inverse pour Apache sur Ubuntu 18.04