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 WebsockifyWebSockify è 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