Обслуживание ws:// в Node.js через Tomcat и Apache

Я гуглил различные комбинации ключевых слов, но не могу найти подходящего описания того, что нужно сделать, чтобы заставить это работать. В настоящее время у меня есть веб-сайт под управлением Apache 2 со всем, кроме заблокированных портов 80 и 443. Я настроил Tomcat для маршрутизации через:80 и:443, используя:

<Location /tomcat/> ProxyPass ajp://localhost:8009/tomcat/ Order allow,deny Allow from all </Location>

Кроме того, существующие приложения http [s] Node.js также были успешно маршрутизированы с помощью следующего кода:

<Location /app_8201/> ProxyPass http://localhost:8201/ </Location>

Я использую Apache/2.2.15, Tomcat 6 и Node.js v0.10.26 на CentOS под Azure. Поддержка Websocket присутствует в качестве запущенных примеров приложений со ссылкой localhost:9999 работает нормально. Там выглядит так, как будто должно быть ProxyPass ws://localhost:9999, но если я буду следовать инструкциям здесь:

<Location /ws/> ProxyPass http://localhost:9999 ProxyPassReverse http://localhost:9999 </Location>

Я получаю ошибку HTTP 500 при попытке получить доступ к каталогу ws либо http или же ws,

я использую mod_proxy_ajp вместо mod_jk как я понимаю ajp лучше".

1 ответ

Поддержка WebSocket впервые появилась в Apache 2.4.5 через модуль mod_proxy_wstunnel, в предыдущих версиях, таких как Apache 2.2, поддержки нет.

Протокол должен быть явно выбран посредством ws: // или wss: //, модули протокола AJP и HTTP для mod_proxy ничего не знают о WebSockets:

<Location /ws>
    ProxyPass ws://localhost:9999
    ProxyPassReverse ws://localhost:9999
</Location>
Другие вопросы по тегам