Как заставить работать Vaadin Push через HTTP-сервер Apache?
пытаюсь получить Vaadin 7.1.5 Push для работы на Apache Tomcat 7.0.42 + HTTP-сервер Apache (2.2.14 с mod_proxy_wstunnel).
Приложение Vaadin и push с WebSocket прекрасно работают, когда я обращаюсь к Tomcat напрямую (т.е.http://mydomain:8080/myapp
). Проблема возникает, когда я пытаюсь получить к нему доступ с помощью модулей Apache mod_proxy & mod_proxy_wstunnel. Что происходит, так это то, что приложение зависает, индикатор загрузки становится красным, и я получаю эту ошибку в push-запросе в консоли браузера:
HTTP Status 501 - Websocket protocol not supported
type Status report
message Websocket protocol not supported
description The server does not support the functionality needed to fulfill this request.
Apache Tomcat/7.0.42
Прежде чем Push был необходим, я использовал mod_jk для пересылки запросов отhttp://mydomain/myapp
вhttp://mydomain:8080/myapp
, По-видимому, mod_jk не делаетt поддерживает WebSocket, поэтому я решил использовать директиву ProxyPass. Вот'Мой конфиг Apache:
ProxyPass /myapp/PUSH/ ws://localhost:8080/myapp/PUSH/
ProxyPassReverse /myapp/PUSH/ ws://localhost:8080/myapp/PUSH/
ProxyPass /myapp/VAADIN/ http://localhost:8080/myapp/VAADIN/
ProxyPassReverse /myapp/VAADIN/ http://localhost:8080/myapp/VAADIN/
ProxyPass /myapp http://localhost:8080/myapp
ProxyPassReverse /myapp http://localhost:8080/myapp
Я подозревал, что виноват mod_proxy_wstunnel, но, очевидно, он работает нормально, когда я проксиhttp://echo.websocket.org, Я обнаружил, что Атмосфера выбрасывает ошибку 501, но я неПонятия не имею, как его отладить. Если я удалю прокси-сервер ws (поэтому push использует HTTP вместо WS), я получу мгновение "Сессия истекла " ошибка.
Кто-нибудь знает, как правильно прокси-запросы push с сервера Apache HTTP на Apache Tomcat?