anh ta có một ứng dụng php có quyền truy cập vào proxmox và hiển thị bảng điều khiển vnc bằng cách chia sẻ mã thông báo. đây là trong một máy chủ apache2. Chúng tôi cố gắng ủy quyền các yêu cầu vnc đằng sau apache để người dùng cuối không có quyền truy cập trực tiếp vào proxmox. Sự cố dựa trên nhật ký không có trình xử lý cho apache:
AH01144: Không có trình xử lý giao thức nào hợp lệ cho URL /api2/json/nodes/server/qemu/vmid/vncwebsocket (sơ đồ 'wss'). Nếu bạn đang sử dụng phiên bản DSO của mod_proxy, hãy đảm bảo rằng các mô-đun con proxy được bao gồm trong cấu hình bằng cách sử dụng LoadModule.
Vấn đề của tôi là mô-đun đã được tải và máy chủ đã được khởi động lại:
root@server-01:~# apache2ctl -M
Các mô-đun đã tải:
core_module (tĩnh)
so_module (tĩnh)
watchdog_module (tĩnh)
http_module (tĩnh)
log_config_module (tĩnh)
logio_module (tĩnh)
version_module (tĩnh)
unixd_module (tĩnh)
access_compat_module (được chia sẻ)
alias_module (được chia sẻ)
auth_basic_module (được chia sẻ)
authn_core_module (được chia sẻ)
authn_file_module (được chia sẻ)
authz_core_module (đã chia sẻ)
authz_host_module (được chia sẻ)
authz_user_module (được chia sẻ)
autoindex_module (được chia sẻ)
deflate_module (được chia sẻ)
dir_module (được chia sẻ)
dumpio_module (đã chia sẻ)
env_module (được chia sẻ)
filter_module (được chia sẻ)
mime_module (đã chia sẻ)
mpm_prefork_module (được chia sẻ)
đàm phán_mô-đun (được chia sẻ)
php7_module (được chia sẻ)
proxy_module (được chia sẻ)
proxy_ajp_module (được chia sẻ)
proxy_balancer_module (được chia sẻ)
proxy_http_module (được chia sẻ)
proxy_wstunnel_module (được chia sẻ)
reqtimeout_module (được chia sẻ)
viết lại_module (đã chia sẻ)
setenvif_module (đã chia sẻ)
slotmem_shm_module (được chia sẻ)
socache_shmcb_module (được chia sẻ)
ssl_module (được chia sẻ)
status_module (được chia sẻ)
Việc triển khai dựa trên hướng dẫn sau:
https://forum.proxmox.com/threads/working-novnc-with-reverse-proxy-on-5-1.43644/
cấu hình apache để ủy quyền cho proxmox là:
root@server01:~# cat /etc/apache2/sites-enabled/proxy-ssl.conf
<IfModule mod_ssl.c>
<Máy chủ ảo _default_:443>
ServerName app01-proxy
Quản trị viên web ServerAdmin@localhost
SSLProxyEngine bật
LogLevel dumpio:trace7
DumpIOInput trên
DumpIOOutput bật
<Vị trí />
ProxyPass https://proxmoxserver:8006/
ProxyPassReverse https://proxmoxserver:8006/
</Vị trí>
<LocationMatch ^/(api2/json/nodes/[^\/]+/[^\/]+/[^\/]+/vncwebsocket.*)$>
ProxyPass wss://proxmoxserver:8006/$1 retry=0
</LocationMatch>
<Vị trí /websockify>
ProxyPass ws://proxmoxserver:8006/
ProxyPassReverse ws://proxmoxserver:8006/
</Vị trí>
Nhật ký lỗi ${APACHE_LOG_DIR}/error.log
Nhật ký tùy chỉnh ${APACHE_LOG_DIR}/access.log kết hợp
Công cụ SSL bật
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Thư mục /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Thư mục>
</Máy chủ ảo>
và cấu hình khác cho ứng dụng cục bộ:
root@server-01:~# cat /etc/apache2/sites-enabled/console-ssl.conf
<IfModule mod_ssl.c>
<Máy chủ ảo _default_:443>
Tên máy chủ ứng dụng01
Quản trị viên web ServerAdmin@localhost
DocumentRoot /var/www/html/hyper-controller/public
<Thư mục /var/www/html/hyper-controller/public>
Tùy chọn Chỉ mục FollowSymLinks MultiViews
AllowOverride All
Lệnh cho phép, từ chối
cho phép từ tất cả
Yêu cầu tất cả cấp
</Thư mục>
Nhật ký lỗi ${APACHE_LOG_DIR}/error.log
Nhật ký tùy chỉnh ${APACHE_LOG_DIR}/access.log kết hợp
Công cụ SSL bật
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Thư mục /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Thư mục>
bật php_flag log_errors
bật php_flag display_errors
php_value error_reporting 2147483647
php_value error_log /var/log/php.error.log
</Máy chủ ảo>
</IfModule>
lỗi xảy ra ở cấp độ trình duyệt là:
lỗi