Ошибка Разбора Соединения Wss С Живым Запросом Сервера На Apache 403

#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://, и он не выдает никаких предупреждений или ошибок, поэтому я думаю, что сейчас я в порядке.