Как использовать RewriteRule и ProxyPass для получения условного прокси? - PullRequest
0 голосов
/ 05 июля 2019

То, что я хочу сделать, это прокси каждую инициализацию websocket на "ws://localhost:8081", а остальную часть трафика прямо на http://localhost:80801

Я получил его с использованием флага [P], однако не рекомендуется делать этотаким образом, поскольку он не использует пул соединений.

Идея состоит в том, чтобы переписать запрос на /websocket, если установлен заголовок, а затем, если url равен /websocket proxypass к конечной точке ws.

Однако это не работает для WS (отлично работает для http)

#rewrite for websockets

RewriteEngine On
LogLevel alert rewrite:trace8
RewriteCond "%{HTTP:Upgrade}" "websocket"
# RewriteRule "" "ws://localhost:8081" [P] works via proxy like that 
RewriteRule "" "/websocket" [L]

ProxyPass /websocket "ws://localhost:8081"
ProxyPassReverse /websocket "ws://localhost:8081"

ProxyPass / http://localhost:8081/

Что я делаю не так?

1 Ответ

0 голосов
/ 05 июля 2019

Как и 10 секунд спустя, и я получил ответ.

Я должен был ПРОЙТИ ПРОПИСАТЬ запрос, поэтому такие настройки, как

RewriteCond "%{HTTP:Upgrade}" "websocket"
# RewriteRule "" "ws://localhost:8081" [P] works via proxy like that 
RewriteRule "" "/websocket" [L,PT]

, выполняют свою работу.

...