Модуль Apache mod_proxy_wstunnel
| Описание: | Модуль поддержки WebSocket для mod_proxy
|
|---|---|
| Статус: | Расширение |
| Идентификатор модуля: | proxy_wstunnel_module |
| Файл исходного кода: | mod_proxy_wstunnel.c |
| Совместимость: | Доступен в httpd 2.4.5 и более поздних версиях |
Краткое описание
Этот модуль требует обслуживания mod_proxy. Он обеспечивает поддержку туннелирования соединений WebSocket к серверу приложений WebSocket. Соединение автоматически повышается до соединения WebSocket:
Ответ HTTP
Upgrade: WebSocket Connection: Upgrade
Перенаправление запросов на сервер WebSocket, например echo.websocket.org, можно выполнить с помощью директивы ProxyPass.
ProxyPass "/ws2/" "ws://echo.websocket.org/" ProxyPass "/wss2/" "wss://echo.websocket.org/"
Перенаправление как HTTP, так и WebSocket одновременно, при этом определенный набор URL предназначен только для WebSocket, можно выполнить, указав директиву WebSocket ProxyPass перед директивой HTTP:
ProxyPassMatch ^/(myApp/ws)$ ws://backend.example.com:9080/$1 ProxyPass / http://backend.example.com:9080/
Перенаправление как HTTP, так и WebSocket одновременно, где URL WebSocket не только для WebSocket или не известны заранее, можно выполнить, используя директиву RewriteRule для настройки перенаправления WebSocket:
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.
На самом деле модуль может быть использован для повышения до других протоколов. Можно установить параметр upgrade в директиве ProxyPass, чтобы позволить модулю принимать другие протоколы. NONE означает, что вы пропускаете проверку заголовка, но всё равно повышаете до WebSocket. ANY означает, что Upgrade будет считывать заголовки запроса и использовать их в ответе Upgrade
Директива 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