Обработчик протокола не действителен для URL-адреса / (схема 'ws')

Пытаясь настроить прокси-сервер websocket с помощью apache2, я получаю следующую ошибку:

Для URL-адреса не действовал обработчик протокола / (scheme 'ws '). Если вы используете DSO-версию mod_proxy, убедитесь, что подмодули прокси включены в конфигурацию с помощью LoadModule

. Модуль wstunnel сервера Apache загружен. Ниже приведен результат apache2ctl -M

Loaded Modules:
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 (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
headers_module (shared)
mime_module (shared)
mpm_prefork_module (shared)
negotiation_module (shared)
php7_module (shared)
proxy_module (shared)
proxy_connect_module (shared)
proxy_fcgi_module (shared)
proxy_html_module (shared)
proxy_http_module (shared)
proxy_wstunnel_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
socache_shmcb_module (shared)
ssl_module (shared)
status_module (shared)
xml2enc_module (shared)
0
задан 1 November 2019 в 17:51
1 ответ

Я тоже получал эту ошибку. Это произошло, когда я проксировал HTTPS-запросы по протоколу WS. Ошибка исчезла, когда я разделил прокси-сервер для пересылки HTTPS-запросов на HTTP и WSS-запросов на WS.

Для этого я настроил mod_rewrite для поиска HTTP-заголовка Upgrade: websocket. Когда он присутствует, он проксирует протокол ws:, когда он отсутствует, он проксирует протокол http:.

<VirtualHost *:443>
    Servername sub.example.com
    Include include/ssl.conf
    
    RewriteEngine on
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteRule /(.*) ws://localhost:1080/$1 [P,L]
    RewriteRule /(.*) http://localhost:1080/$1 [P,L]
</VirtualHost>
2
ответ дан 22 December 2020 в 14:06

Теги

Похожие вопросы