Обслуживание 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>