Что случилось с push после обновления VM до 7.5 ? Ранее настраивал по этой инструкции, все работало, теперь на битриксе эти порты (8010:8015) переехали на localhost и соответственно не доступны из вне. Есть рабочая инструкция настройки прокси для битрикса?
Ошибка подключения к серверу пропала, сообщения ходят в т.ч. в мобильное приложение. Однако при выполнении "Проверки системы" всё равно показывает ошибки push&pull сервера: https://c2n.me/4hPm7YN.png Подскажите, можно это как-то исправить? А то когда обращается в техподдержку, всегда просят скинуть скрин этой страницы, чтобы не было ошибок, а они то есть...
Здравствуйте, все страждущие победить данный кейс коллеги! После 4х дней непрерывной игры в "тетрис" с параметрами nginx revers proxy и ВМ Б24, мой пазл сошелся и, наконец-то, я получил 100% работоспособный конфиг, и увидел долгожданные надписи: "Функция работает правильно".
И так начнём с преамбулы содержащей 2 постулата: 1. По умолчанию ВМ Б24 сконфигурирована так, чтобы принимать трафик по 443му порту напрямую из интернет. Из чего следует, что настройка nginx реверс прокси в базе своей должна содержать те же параметры в директивах http и localtion, по крайней мере в части конфига отвечающего за проксирование запросов по доменному имени портала Б24. Значит для успешной настройки реверс прокси нам необходимо просмотреть все настройки nginx.conf ВМ Б24 и всех его инклюдов и выбрать от туда настройки необходимые для проброса https трафика, с учётом обработки дополнительных заголовков, необходимых для websocket и long polling. В общем нужно отталкиваться от того, что и как бы работало если бы трафик шел напрямую на ВМ Б24, и повторяем все параметры в части размеров пакетов данных и таймингов на те же, чтобы не было коллизий. 2. Куча инструкций в интернете, в т.ч. официальных от Б24, содержат в себе "винегрет" из настроек необходимых для старой схемы работы push&pull сервера по технологии "nginx-push-stream-module" и новой - самописного модуля от Б24 под названием "push-server". Поэтому при попытке повторить какие-то настройки из инструкций, вы всегда окажитесь в ситуации когда часть настроек - верна, а другая часть - нет, что в конечном итоге вводит в ещё большее заблуждение и лишает страждущих последнего шанса разобраться в данном вопросе.
Теперь о том как и что мне удалось понять, и как в итоге я всё настроил. Сначала про нюансы и проблемы, с которыми столкнулся конкретно я. 1. На Б24 ВМ в моём случае порты 8010:8015,9010,9011 прослушивались не на localhost (127.0.0.1), а на IP локальной сети (сетевого интерфейса). Поэтому в моём случае необходимо было добавить в цепочку INPUT iptables правила (на Б24 ВМ):
Для того чтобы проверить, какие порты и на каких интерфейсах прослушивает ВМ Б24 вводим:
Код
netstat -ntulp
2. Вот в этой инструкции от Б24 всё прекрасно, кроме одного, но очень существенного момента. В ней указывается, что необходимо скачать на реверс-прокси вот этот файл bx/settings/rtc-im_settings.conf и включить его в секцию http nginx.conf. Если сделать так как сказано, у нас в данном файле окажется следующая настройка:
Код
upstream nodejs_sub {
ip_hash;
keepalive 1024;
server push:8010;
server push:8011;
server push:8012;
server push:8013;
server push:8014;
server push:8015;
}
upstream nodejs_pub {
ip_hash;
keepalive 1024;
server push:9010;
server push:9011;
}
и даже если вы подмените переменную push на реальный IP ВМ Б24, у вас реверс-прокси в директиве
будет передавать весть трафик не на 443й порт ВМ Б24, который слушает nginx ВМ Б24, а напрямую на порты push-server'а ВМ Б24, а тот в свою очередь ожидает этот трафик от nginx ВМ Б24, поэтому так работать не будет. Сам по себе push-server это модуль разработки Б24, никаких исчерпывающий инструкций по его работе в интернет просто не существует, поэтому пытаться его настроить на получение трафика от реверс-прокси гиблая идея на корню. Следовательно, действовать согласно инструкции от Б24 можно и нужно, но в указанной выше части, нужно пропустить обе директивы upstream nodejs_sub в файле bx/settings/rtc-im_settings.conf, оставить надо только обе директивы map. 3. В этом посте на форуме Б24 в предложенном конфиге для реверс-прокси nginx есть параметр
Код
proxy_set_header Authorization "" ;
если его применить, у вас навсегда разлогинится мобильное приложение, и даже при указании верного пароля вы не сможете залогиниться в него обратно. 4. Ни где (ни в инструкциях Б24, ни на форуме Б24) не указано, что необходимо привести в соответствие в директиве http nginx.conf реверс прокси ряд параметров, которые содержатся в аналогичной директиве ВМ Б24. А это логично и соответственно необходимо для корректной работы.
В итоге вот сборка 100% работающая (быстро и без сбоев) из моих конфигов для реверс-прокси nginx: 1. Обновляем Nginx на реверс прокси, минимум до такой же версии как и на ВМ Б24, в моём случае это была версия 1.20.2, которая уже содержала пакеты nginx-extras, необходимые для передачи специальных заголовков websocket. 2. Настройка реверс-прокси nginx. В nginx.conf в директиву http добавляем параметры из nginx.conf ВМ Б24 (у меня они собраны в bx/bx_general_proxy_settings.conf) и директивы map из файла bx/settings/rtc-im_settings.conf:
Код
include bx/settings/rtc-im_settings.conf;
include bx/bx_general_proxy_settings.conf;
На ВМ Б24 не забываем включить чтение передаваемого от реверс прокси IP адреса с которого идёт запрос. Для чего на BitrixVM – создаем конфигурационный файл bx/settings/real_ip.conf:
Иначе ВМ Б24 не будет видеть IP с которых заходят пользователи, что в частности может повлиять на настройки безопасности, например, для ограничения входа в админку по IP адресу. 3. ОБЯЗАТЕЛЬНО копируем SSL сертификат и ключ c реверс-прокси на ВМ Б24 и прописываем его в bx/conf/ssl.conf. Без него - не работает! И этого ни в одной инструкции не было! При этом с реверс-прокси, мы весь трафик отправляем на https 443й порт ВМ Б24. 4. Если всё равно не работает переустановите Push-server на ВМ Б24:
П.С.: если кому-то помог мой пост, с вас лойсы в карму)
Добрый день. Спасибо Вам большое за Ваш ответ. Столкнулась с не особо качественным внедрением по контракту, пришлось разбираться самой. Но у нас просто bitrix.
В целом ваш ответ натолкнул на мысли о правильном взаимодействии web proxy nginx - nginx+apache
Плюс минус конфигурация на nginx веб-прокси и nginx на хосте должна совпадать в передаваемых переменных proxy_set_header и в значениях буферов, таймаутов и всего прочего (у вас это bx_general_proxy_settings.conf)
Проксировать можно как и на 443 порт на хосте, так и на 80. Думаю даже лучше в данной ситуации проксировать на 80 порт. Т.к. документации на эту тему, касаемо битрикса немного, то сложно сказать как сделать "правильно". Просто в случае проксирования на 443 порт, будет ли использоваться еще шифрование? Не избыточно ли это внутри вашей сети. Поэтому позиции в вебпрокси выглядят так: