Назад | Перейти на главную страницу

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

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

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

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

<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 лучше".

Поддержка 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>