WebSockifyトークンターゲットの選択

3603 ワード


インprevious post 私はnginxプロキシの後ろにwebsockifyを設定する方法を見ました.究極の目標は、複数の同時ユーザーを収容することでした.そのポストのセットアップが働いたけれども、ユーザーの数が大きいならば、各々のユーザーのために実行しているwebsockifyインスタンスがあるので、それは非常に資源空腹になります.
私たちは使用するつもりですtoken based target selection 同じセットアップを実装するには、WebSockifyの単一のインスタンスを使用します.我々は、2つのユーザー、アリスとボブのセットアップを構築しますが、原則より多くのユーザーにスケール.

VNCサーバ


私たちはアリスとボブの別のVNCサーバが必要です.
ユーザとしてこれを実行するalice .
vncserver \
    -localhost no \
    -geometry 1024x768 \
    -SecurityTypes None --I-KNOW-THIS-IS-INSECURE \
    :0
ユーザとしてこれを実行するbob .
vncserver \
    -localhost no \
    -geometry 1024x768 \
    -SecurityTypes None --I-KNOW-THIS-IS-INSECURE \
    :1
我々は現在、ポート5900と5901の要求に答える2つのVNCサーバがあります.

websockifyトークンの設定


ユーザーのトークンを指定する設定ファイルを作成します.
U6F7msdQ: 127.0.0.1:5900
1oJw2DwG: 127.0.0.1:5901
トークンの値は本当に何かをすることができます.🚨 最初のスペース: 重要です!

websockify


今すぐwebsockifyを開始する準備が整いました.
websockify -D \
    --verbose \
    --web /usr/share/novnc/ \
    --token-plugin=TokenFile \
    --token-source=/etc/websockify-token.cfg \
    6080
注意事項
  • VNCのホストとポートを指定しないでください.
  • 用途--token-plugin トークンを扱うプラグインを指定します.トークンファイルプラグインを使用しています.TokenFile , しかし、他の様々なオプションがありますReadOnlyTokenFile and TokenRedis .
  • 用途--token-source 設定ファイルの場所を指定します.🚨 WebSockifyは設定ファイルを開くことができない場合は停止しません.それで、あなたが正しい絶対パスを通過していることを確認してください、さもなければ、ものはちょうど働きません、そして、それは理由を明らかにしません!
  • nginxプロキシ


    最終的なコンポーネントはnginxの後ろにこのすべてを置くことです.まず、簡単なHTMLインデックスページが必要です.
    <a href="/novnc/vnc.html?resize=remote&path=novnc/websockify?token=U6F7msdQ">
      Alice
    </a>
    <a href="/novnc/vnc.html?resize=remote&path=novnc/websockify?token=1oJw2DwG">
      Bob
    </a>
    
    ここで重要なコンポーネントは、WebSockifyへのパスが指定され、それぞれのユーザーに正しいトークンを渡す方法です.
    そして、より簡潔なnginx.conf , WebSockifyの単一インスタンスのプロキシを設定するだけです.
    user www-data;
    daemon off;
    
    events {
    }
    
    http {
      server {
        listen 80 default_server;
    
        location / {
          root /www/data;
          try_files $uri $uri/ /index-both.html;
        }
    
        location /novnc/ {
          proxy_pass http://127.0.0.1:6080/;
        }
        location /novnc/websockify {
          proxy_pass http://127.0.0.1:6080/;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "Upgrade";
          proxy_set_header Host $host;
        }
      }
    }
    
    ファイアアップNGinx.
    nginx
    
    とインデックスページを参照します.名前のいずれかをクリックして選択したデスクトップに表示されます.トークンがURLで渡されることに注意してください.

    だから今、私たちには、かなりのleanerシステムがあります:各々のユーザーのためのWebSocifyプロセスの代わりに、我々はちょうど各々のユーザーのために適切なVNCサービスに要求を出す一つのプロセスを持っています.