Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_proxy_wstunnel

Описание: Модуль поддержки веб-сокетов для mod_proxy
Статус: Расширение
Идентификатор модуля: proxy_wstunnel_module
Исходный файл: mod_proxy_wstunnel.c
Совместимость: Доступен в httpd 2.4.5 и более поздних версиях

Сводка

Устаревание

Начиная с Apache HTTP Server 2.4.47, обновление протокола (туннелирование) можно эффективнее обрабатывать с помощью mod_proxy_http.

См. Обновление протокола.

Для работы этого модуля требуется mod_proxy. Он обеспечивает туннелирование соединений веб-сокетов к серверу веб-сокетов в бэкенде. Соединение автоматически переключается на соединение веб-сокета:

Ответ HTTP

Upgrade: WebSocket
Connection: Upgrade

Проксирование запросов к серверу веб-сокетов, например echo.websocket.org, можно настроить с помощью директивы ProxyPass:

ProxyPass "/ws2/"  "ws://echo.websocket.org/"
ProxyPass "/wss2/" "wss://echo.websocket.org/"

Одновременное проксирование HTTP и веб-сокетов, когда определённый набор URL предназначен только для веб-сокетов, можно настроить, указав директиву ProxyPass для веб-сокетов перед директивой HTTP:

ProxyPassMatch ^/(myApp/ws)$  ws://backend.example.com:9080/$1
ProxyPass / http://backend.example.com:9080/

Одновременное проксирование HTTP и веб-сокетов, когда URL веб-сокетов не предназначены исключительно для веб-сокетов или заранее неизвестны, можно настроить с помощью директивы RewriteRule:

ProxyPass / http://example.com:9080/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://example.com:9080/$1" [P,L]

Балансировку нагрузки между несколькими бэкендами можно настроить с помощью mod_proxy_balancer.

Модуль также можно использовать для переключения на протоколы, отличные от WebSocket, задав параметру обновление протокола в директиве ProxyPass имя пользовательского протокола. Специальные значения upgrade=NONE и upgrade=ANY можно использовать для тестирования или принудительного переключения протокола, но по соображениям безопасности их не рекомендуется использовать в рабочей среде. NONE означает, что проверка заголовка пропускается, но переключение на WebSocket и туннелирование всё равно всегда выполняются. ANY означает, что переключение протокола и туннелирование будут выполняться с использованием любого протокола, запрошенного клиентом.

Директива ProxyWebsocketFallbackToProxyHttp

Описание: Указывает этому модулю передать обработку запроса модулю mod_proxy_http
Синтаксис:
ProxyWebsocketFallbackToProxyHttp On|Off
Значение по умолчанию:
ProxyWebsocketFallbackToProxyHttp On
Контекст: конфигурация сервера, виртуальный хост
Статус: Расширение
Модуль: mod_proxy_wstunnel
Совместимость: Доступен в httpd 2.4.48 и более поздних версиях

Начиная с httpd 2.4.47, mod_proxy_http может обрабатывать переключение на WebSocket и туннелирование в соответствии с RFC 7230. Эта директива определяет, должен ли mod_proxy_wstunnel передавать обработку запроса для этого модулю mod_proxy_http; по умолчанию это происходит.

Значение Off позволяет модулю mod_proxy_wstunnel обрабатывать запросы WebSocket так же, как в httpd 2.4.46 и более ранних версиях.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_wstunnel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API