у него есть приложение php, которое имеет доступ к proxmox и отображает консоль vnc, используя токен. это на сервере apache2. Мы пытаемся проксировать запросы vnc за apache, чтобы у конечного пользователя не было прямого доступа к proxmox. Проблема, основанная на журналах, что нет обработчика для apache:
AH01144: обработчик протокола недействителен для URL-адреса /api2/json/nodes/server/qemu/vmid/vncwebsocket (схема «wss»). Если вы используете DSO-версию mod_proxy, убедитесь, что подмодули прокси включены в конфигурацию с помощью LoadModule.
Моя проблема в том, что модуль загружен, а сервер перезапущен:
root@server-01:~# apache2ctl -M
Загруженные модули:
core_module (статический)
so_module (статический)
watchdog_module (статический)
http_module (статический)
log_config_module (статический)
logio_module (статический)
version_module (статический)
unixd_module (статический)
access_compat_module (общий)
alias_module (общий)
auth_basic_module (общий)
authn_core_module (общий)
authn_file_module (общий)
authz_core_module (общий)
authz_host_module (общий)
authz_user_module (общий)
autoindex_module (общий)
deflate_module (общий)
dir_module (общий)
dumpio_module (общий)
env_module (общий)
filter_module (общий)
mime_module (общий)
mpm_prefork_module (общий)
модуль переговоров (общий)
php7_module (общий)
proxy_module (общий)
proxy_ajp_module (общий)
proxy_balancer_module (общий)
proxy_http_module (общий)
proxy_wstunnel_module (общий)
reqtimeout_module (общий)
rewrite_module (общий)
setenvif_module (общий)
slotmem_shm_module (общий)
socache_shmcb_module (общий)
ssl_module (общий)
status_module (общий)
Реализация основана на следующем руководстве:
https://forum.proxmox.com/threads/working-novnc-with-reverse-proxy-on-5-1.43644/
конфигурация apache для проксирования на proxmox:
root@server01:~# cat /etc/apache2/sites-enabled/proxy-ssl.conf
<IfModule mod_ssl.c>
<Виртуальный хост _default_:443>
Имя_сервера app01-proxy
Веб-мастер администратора сервера@localhost
SSLProxyEngine включен
Дампио уровня логарифма: трассировка7
DumpIOInput включен
Вывод DumpIO включен
<Местоположение />
Проксипасс https://proxmoxserver:8006/
ProxyPassReverse https://proxmoxserver:8006/
</местоположение>
<LocationMatch ^/(api2/json/nodes/[^\/]+/[^\/]+/[^\/]+/vncwebsocket.*)$>
ProxyPass wss://proxmoxserver:8006/$1 повтор=0
</LocationMatch>
<Местоположение /websockify>
Проксипасс ws://proxmoxserver:8006/
ProxyPassReverse ws://proxmoxserver:8006/
</местоположение>
Журнал ошибок ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log вместе
SSLEngine включен
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Каталог /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Каталог>
</ виртуальный хост>
и другая конфигурация для локального приложения:
root@server-01:~# cat /etc/apache2/sites-enabled/console-ssl.conf
<IfModule mod_ssl.c>
<Виртуальный хост _default_:443>
имя_сервера app01
Веб-мастер администратора сервера@localhost
DocumentRoot /var/www/html/hyper-controller/public
<Каталог /var/www/html/hyper-controller/public>
Опционы Индексы FollowSymLinks MultiViews
Разрешить переопределить все
Порядок разрешить, запретить
разрешить от всех
Требовать все предоставленные
</Каталог>
Журнал ошибок ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log вместе
SSLEngine включен
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Каталог /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Каталог>
php_flag log_errors включен
php_flag display_errors включен
php_value error_reporting 2147483647
php_value error_log /var/log/php.error.log
</ виртуальный хост>
</ЕслиМодуль>
произошла ошибка на уровне браузера:
ошибка