mod_proxy_wstunnel с запуском кометы на причале

Я пытаюсь использовать Apache в качестве обратного прокси-сервера для моего сервера Jetty, на котором работает cometd.

Моя установка работает следующим образом:

Apache(HTTPS) --> Jetty(HTTP)

Вот файл конфигурации Apache

<VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName y.domain.com

        ProxyPass / http://localhost:8888/
        ProxyPassReverse / http://localhost:8888/

        ProxyPass /ws/  ws://localhost:8888/
        ProxyPass /wss/ wss://localhost:8888/

        ProxyRequests Off
        ProxyVia On
        Timeout 1500
        KeepAlive On
        MaxKeepAliveRequests 100
        KeepAliveTimeout 15

        <Proxy *>
                Order deny,allow
                Deny from all
                Allow from all
        </Proxy>

        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/localhost.crt
        SSLCertificateKeyFile /etc/apache2/ssl/localhost.key
        SSLCertificateChainFile /etc/apache2/ssl/ca.crt

        ErrorLog /var/log/apache2/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>

На клиенте я использую cometd.js.

Однако я получаю эту ошибку на клиенте во время рукопожатия

Error during WebSocket handshake: Unexpected response code: 400

Адрес wss://y.domain.com

После этого клиент пытается снова, и сайт работает, но, боюсь, рукопожатие с долгим опросом...

Что мне не хватает?


person Stimpy    schedule 27.08.2014    source источник
comment
Apache перед Jetty является известным узким местом в производительности и возможностях, можете ли вы объяснить, почему вы чувствуете необходимость использовать настройку?   -  person Joakim Erdfelt    schedule 27.08.2014
comment
ну, мое приложение использует 4 разных виртуальных хостинга, которые работают на одном сервере. Некоторые из них используют локальный apache, а некоторые используют apache в качестве обратного прокси. Поскольку я хочу, чтобы все они работали с SSL с портом 443, Apache/NGINX кажется лучшим вариантом. Если я запускаю Jetty в собственном режиме (с портом 443), мне нужно перейти на 2 разные машины, о чем я должен помнить.   -  person Stimpy    schedule 29.08.2014


Ответы (1)


Порядок директив ProxyPass имеет значение

Настроенные правила ProxyPass и ProxyPassMatch проверяются в порядке настройки. Выигрывает первое совпадающее правило.

http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass

person Tahonen    schedule 11.03.2015