Попытка заставить Websockify / noVNC работать через обратный прокси-сервер
Я пытаюсь понять, как заставить noVNC работать через обратный прокси, и хотя он работает, если я подключаюсь непосредственно к нему, он не работает, если я пытаюсь изменить прокси.
А именно:
Я запускаю его как ./utils/launch.sh --vnc localhost:5901
Если я подключусь к нему как https://<machine>:6080/vnc.html?host=<machine>&port=6080
Он работает нормально, и я могу подключиться к сеансу vnc
Однако я хочу иметь возможность подключиться к нему через обратный прокси-сервер через порт 443.В Apache 2.4.10 (-8 в Debian Jessie) я настроил свой прокси строка должна быть
ProxyPass /home http://127.0.0.1:6080/
ProxyPassReverse /home http://127.0.0.1:6080/
ProxyPass /websockify wss://127.0.0.1:6080/websockify retry=3
ProxyPassReverse /websockify wss://127.0.0.1:6080/websockify retry=3
И я подключаюсь к нему как https://<machine>/vnc.html?host=<machine>&port=6080
Это все еще работает, так как в то время как выборка html/javascript проходит через обратный прокси-сервер, я все еще говорю соединению websocket перейти через 6080, и это работает.
Однако, когда я изменяю его на https://<machine>/vnc.html?host=<machine>&port=443
Я получаю html/javascript просто отлично, но когда он идет, чтобы сделать соединение, в firefox (и chrome и IE, но эта ошибка от firefox в частности) я быстро получаю
Firefox can't establish a connection to the server at wss://<machine>/websockify.
А в новнк я вижу сообщение об ошибке
127.0.0.1: ignoring socket not ready
1 ответ:
Оказывается, если кто-то хочет проксировать websockets через HTTPS-прокси, нужно сделать прокси-часть обычными websockets (ws://), а не защищенными web-сокетами (wss://), что имеет смысл, поскольку HTTPS-прокси уже обработал бы ssl-часть, и делать нечего.
Сделайте это изменение, и все будет работать.ProxyPass /websockify ws://127.0.0.1:6080/websockify retry=3 ProxyPassReverse /websockify ws://127.0.0.1:6080/websockify retry=3