el are o aplicație php care are acces la proxmox și afișează consola vnc prin partajarea token-ului. acesta este pe un server apache2. Încercăm să trimitem cererile vnc în spatele apache, astfel încât utilizatorul final să nu aibă acces direct la proxmox. Problema bazată pe jurnalele că nu există un handler pentru apache:
AH01144: Niciun handler de protocol nu a fost valid pentru adresa URL /api2/json/nodes/server/qemu/vmid/vncwebsocket (schema „wss”). Dacă utilizați o versiune DSO a mod_proxy, asigurați-vă că submodulele proxy sunt incluse în configurație folosind LoadModule.
Problema mea este că modulul este încărcat și serverul a fost repornit:
root@server-01:~# apache2ctl -M
Module încărcate:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (partajat)
alias_module (partajat)
auth_basic_module (partajat)
authn_core_module (partajat)
authn_file_module (partajat)
authz_core_module (partajat)
authz_host_module (partajat)
authz_user_module (partajat)
autoindex_module (partajat)
deflate_module (partajat)
dir_module (partajat)
dumpio_module (partajat)
env_module (partajat)
filter_module (partajat)
mime_module (partajat)
mpm_prefork_module (partajat)
negotiation_module (partajat)
php7_module (partajat)
proxy_module (partajat)
proxy_ajp_module (partajat)
proxy_balancer_module (partajat)
proxy_http_module (partajat)
proxy_wstunnel_module (partajat)
reqtimeout_module (partajat)
rewrite_module (partajat)
setenvif_module (partajat)
slotmem_shm_module (partajat)
socache_shmcb_module (partajat)
ssl_module (partajat)
status_module (partajat)
Implementarea se bazează pe următorul ghid:
https://forum.proxmox.com/threads/working-novnc-with-reverse-proxy-on-5-1.43644/
configurația apache pentru proxy la proxmox este:
root@server01:~# cat /etc/apache2/sites-enabled/proxy-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName app01-proxy
ServerAdmin webmaster@localhost
SSLProxyEngine activat
LogLevel dumpio:trace7
DumpIOInput activat
DumpIOOutput activat
<Locație />
ProxyPass https://proxmoxserver:8006/
ProxyPassReverse https://proxmoxserver:8006/
</Locație>
<LocationMatch ^/(api2/json/nodes/[^\/]+/[^\/]+/[^\/]+/vncwebsocket.*)$>
ProxyPass wss://proxmoxserver:8006/$1 retry=0
</LocationMatch>
<Locație /websockify>
ProxyPass ws://proxmoxserver:8006/
ProxyPassReverse ws://proxmoxserver:8006/
</Locație>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combinat
SSLEngine activat
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Director /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Director>
</VirtualHost>
iar cealaltă configurație pentru aplicația locală:
root@server-01:~# cat /etc/apache2/sites-enabled/console-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName app01
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/hyper-controller/public
<Directorul /var/www/html/hyper-controller/public>
Opțiuni Indexuri FollowSymLinks MultiViews
AllowOverride All
Comanda permite, refuza
permite de la toti
Solicitați toate acordate
</Director>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combinat
SSLEngine activat
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Director /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Director>
php_flag log_errors activat
php_flag display_errors activat
php_value error_reporting 2147483647
php_value error_log /var/log/php.error.log
</VirtualHost>
</IfModule>
eroarea apărută la nivel de browser este:
eroare