Použil jsem WebSockify ve své webové aplikaci pro připojení k serveru VNC pomocí noVNC, abych umožnil vzdálený přístup k serverům Linux prostřednictvím prohlížeče. Byla to snadná implementace, protože nebyl zapojen žádný firewall a byl otevřen port WebSocket. Nedávno jsem však musel migrovat na jiný server, který byl za firewallem, a nechtěl jsem otevřít port, protože by to mohlo ohrozit celý systém. V tomto článku budeme implementovat WebSockify prostřednictvím Apache Reverse Proxy.
Co je noVNC?
noVNC je HTML klient pro VNC. Pomocí noVNC se můžete připojit k serveru VNC z prohlížeče.
Proč WebSockify?WebSockify převádí provoz WebSockets na normální provoz soketu. Websockify přijímá navázání spojení WebSockets, analyzuje jej a poté začne předávat provoz mezi klientem a cílem v obou směrech.
Obrázek se svolením:datawookie.dev
Předpoklad:Předpokládá se, že vaše WebSockify i webový server Apache běží na stejném hostiteli.
Nastavení:
- Apache v2.4
- WebSockify pro WebSockets na portu 6080
- noVNC nainstalováno
- vzdálený server se systémem VNC
- CentOS Linux 7.9
Poznámka: Nebudeme zacházet do podrobností o tom, jak nakonfigurovat WebSockify s noVNC &VNC.
Konfigurace Apache Reverse Proxy pro Websockets
Krok 1: Ujistěte se, že níže uvedené moduly jsou povoleny v Apache /etc/httpd/conf.modules.d/
složka.
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
Krok 2: Vytvořte VirtualHost s pravidly ReverseProxy a Rewrite, jak je uvedeno níže:
Adresa URL aplikace WebsockifyWebSockify běží na portu 6080 a je přístupný přes adresu 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>
Krok 3: Restartujte webový server Apache
# systemctl restart httpd