#apache #amazon-ec2 #parse-platform #bitnami #parse-live-query
Вопрос:
Я бьюсь головой о стену над тем, чтобы живые запросы сервера синтаксического анализа работали уже неделю, и что бы я ни делал, я просто не могу заставить apache пропустить соединение wss://.
Я использую bitnami ami, который настраивает сервер синтаксического анализа и панель мониторинга на экземпляре linux/apache ec2.
Мне нужно, чтобы это работало по протоколу https/wss, и я попробовал 2 разных направления для этого.
Первый-просто указать домен непосредственно на IP-адрес экземпляра и использовать встроенный инструмент шифрования пакетов bitnami в ami для создания ssl-сертификатов. Я решил, что таким образом можно избежать любых потенциальных проблем с балансировщиком нагрузки aws и сертификатом, выданным через их диспетчер сертификатов. У меня все нормально подключается по https, но соединение wss всегда заблокировано.
Второй метод, который я попробовал, состоял в том, чтобы указать домен на балансировщик нагрузки и использовать сертификат из диспетчера сертификатов aws. Я решил, что не смогу никуда попасть, перейдя непосредственно к экземпляру, так что я могу попробовать. Нет, то же самое.
В моем журнале синтаксического анализа говорится, что запущен сервер живых запросов, который зарегистрирован в событии onListen, поэтому я не думаю, что это проблема с самим сервером живых запросов синтаксического анализа, скорее это должна быть какая-то проблема с apache, и я никоим образом не гуру apache.
У ami уже включен модуль proxy_wstunnel_module, и он использует обратный прокси-сервер для http. Я попытался добавить несколько вариантов следующего в httpd.config, но ничего из того, что я делаю, похоже, не имеет никакого эффекта:
#RewriteEngine on
#RewriteCond ${HTTP:Upgrade} websocket [NC]
#RewriteCond ${HTTP:Connection} upgrade [NC]
#RewriteRule .* "ws://127.0.0.1:1337/$1" [P,L]
#ProxyPass "/parse" "wss://127.0.0.1:1337/parse"
#ProxyPassReverse "/parse" "wss://127.0.0.1:1337/parse"
Документы в лучшем случае скудны по этому конкретному аспекту, и то, что я могу найти, относится к nginx, а не к apache.
Единственное, что я еще не пробовал, — это запускать сервер живых запросов отдельно с redis, но решил, что если я не смогу заставить работать эту более простую настройку, то нет смысла даже думать о том, чтобы спуститься в эту потенциальную кроличью нору.
Синтаксический анализ идеально подходит для того, что мне нужно создать, так как я не могу использовать Firebase, но для его использования мне нужен сервер живых запросов, надежно работающий через wss, так что сейчас я в значительной степени застрял.
У кого-нибудь есть опыт работы с этим или есть какие-либо идеи о том, что нужно попытаться подключить через wss?
Ответ №1:
Наконец-то у меня получилось.
В файле parse-https-vhost.conf я добавил следующее в разделе виртуальный хост:
SSLProxyEngine при перезаписи, при перезаписи, секунда %{HTTP:Upgrade} перезапись websocket [NC] / (.*) ws://localhost:1337/$1 [P,L]
Проксипасс «/разбор» «ws://127.0.0.1:1337/разбор» Проксипасс «/разбор» «ws://127.0.0.1:1337/разбор»
Я понятия не имею, безопасно ли это на самом деле, но звонок по подписке от клиента проходит через wss://, и он не выдает никаких предупреждений или ошибок, поэтому я думаю, что сейчас я в порядке.