WebアプリケーションでWebSockifyを使用し、noVNCを使用してVNCサーバーに接続し、ブラウザーを介したLinuxサーバーへのリモートアクセスを有効にしました。ファイアウォールがなく、WebSocketポートが開かれているため、簡単に実装できました。ただし、最近、ファイアウォールの背後にある別のサーバーに移行する必要があり、システム全体が危険にさらされる可能性があるため、ポートを開きたくありませんでした。この記事では、Apacheリバースプロキシを介してWebSockifyを実装します。
noVNCとは何ですか?
noVNCは、VNC用のHTMLクライアントです。 noVNCを使用すると、ブラウザからVNCサーバーに接続できます。
なぜWebSockifyなのですか?WebSockifyは、WebSocketトラフィックを通常のソケットトラフィックに変換します。 Websockifyは、WebSocketのハンドシェイクを受け入れて解析し、クライアントとターゲットの間で双方向にトラフィックの転送を開始します。
写真提供:datawookie.dev
予測:WebSockifyとApacheWebサーバーの両方が同じホストで実行されていることを前提としています。
セットアップ:
- Apache v2.4
- ポート6080のWebSocket用のWebSockify
- noVNCがインストールされています
- VNCを実行しているリモートサーバー
- CentOS Linux 7.9
注: noVNCとVNCを使用してWebSockifyを構成する方法については詳しく説明しません。
Websocket用にApacheリバースプロキシを構成する
ステップ1: 以下のモジュールがApache/etc/httpd/conf.modules.d/
で有効になっていることを確認してください フォルダ。
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
ステップ2: 以下のように、ReverseProxyおよびRewriteルールを持つVirtualHostを作成します。
WebsockifyアプリケーションのURLWebSockifyはポート6080で実行されており、次の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>
ステップ3: ApacheWebサーバーを再起動します
# systemctl restart httpd