Saya menggunakan WebSockify di aplikasi web saya untuk terhubung ke server VNC menggunakan noVNC untuk mengaktifkan akses jarak jauh ke server Linux melalui browser. Itu adalah implementasi yang mudah karena tidak ada firewall yang terlibat dan port WebSocket dibuka. Namun, baru-baru ini saya harus bermigrasi ke server lain yang berada di belakang firewall dan saya tidak ingin membuka port karena dapat membahayakan seluruh sistem. Pada artikel ini, kami akan mengimplementasikan WebSockify melalui Apache Reverse Proxy.
Apa itu noVNC?
noVNC adalah klien HTML untuk VNC. Menggunakan noVNC, Anda dapat terhubung ke server VNC dari browser.
Mengapa WebSockify?WebSockify menerjemahkan lalu lintas WebSockets ke lalu lintas soket normal. Websockify menerima jabat tangan WebSockets, menguraikannya, lalu mulai meneruskan lalu lintas antara klien dan target di kedua arah.
Pic Courtesy:datawookie.dev
Anggapan:Diasumsikan bahwa WebSockify dan server web Apache Anda berjalan di host yang sama.
Penyiapan:
- Apache v2.4
- WebSockify untuk WebSockets pada port 6080
- tidak ada VNC yang terpasang
- server jarak jauh menjalankan VNC
- CentOS Linux 7.9
Catatan: Kami tidak akan membahas secara rinci tentang cara mengkonfigurasi WebSockify dengan noVNC &VNC.
Konfigurasi Apache Reverse Proxy untuk Websockets
Langkah 1: Pastikan modul di bawah ini diaktifkan di Apache /etc/httpd/conf.modules.d/
folder.
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
Langkah 2: Buat VirtualHost yang memiliki aturan ReverseProxy dan Rewrite seperti di bawah ini:
URL Aplikasi WebsockifyWebSockify berjalan pada port 6080 dan dapat diakses melalui 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>
Langkah 3: Mulai ulang server web Apache
# systemctl restart httpd