guvijur
@guvijur
Практик, кинестетик, ретроград и консерватор

Как решить проблему с дублированием сессий в Bitrix24?

Всем привет!

Друзья, товарищи, господа и прекрасные дамы!
Пожалуйста, помогите мне восстановить своё психическое состояние, иначе по улицам скоро будет бегать очередной сумасшедший, кричащий что-то невнятное, немного напоминающее фразу " НЕ был поддоменом сайта, который работает НЕ на Битрикс".

Итак, уже неделю наверное общаюсь через чат с техподдержкой битрикса и не могу вдуплить кое-что.
После очередного обновления у всех пользователей портала в верхней части окна браузера появилась красная строка с сообщением "Отсутствует соединение с сервером":
60e7f39e773f8698290550.jpeg

Обратиться в техподдержку через чат в тот момент не представлялось возможным, поскольку из-за этой ошибки не работали чаты. Обратился через сайт битрикса, но мне так и не помогли. Помогла другая компания, которая занимается интеграцией битрикса, у которой мы купили услуги по обучению.
Тем не менее проблему до конца решить не получилось. Манагеры каждое своё утро теперь начинают с очистки кукисов и кэша, иначе появляется эта ошибка. В процессе общения с техподдержкой у меня возникла мысль о самоубийстве. Не сразу конечно, сначала был гнев, отрицание. Я вообще не мог долгое время понять, что от меня хочет специалист на том конце чата.
Итак, портал открывался по адресу (изменён умышленно) spb.bitrix.domain.net.
Специалист мне кидает ссылку и говорит, что "что портал НЕ должен быть поддоменом сайта.".
Я начинаю судорожно лазать по разделу Сайты на портале и смотреть там настройки, параллельно пытаюсь выяснить, что же всё-таки имеется в виду.
Надо сделать отступление, что ранее нам некоторая компания, связанная с битрикс, делала перенос с 4-х порталов на 1-ну коробку, но всё закончилось не удачно и сейчас мы решили, что нахрен, как-нибудь сами попробуем.
Поскольку из 4-х работавших филиалов сейчас работает только один, я спрашиваю:
А если я удалю все сайты, а в одном оставшемся удалю поддомен spb, т.е. буквально будет bitrix.domain.net, то так заработает? Ответ был - ДА!
Ну, я в разделе сайты попытался удалить сайты, что не получилось из-за какой-то ошибки, в итоге я их деактивировал, а в одном убрал spb.
И знаете что, проблема не ушла. Я снова в чат, а мне тот же специалист опять повторяет, что "bitrix.domain.net не должен быть поддоменом. Мы с вами это уже обсуждали выше.". У меня выбивает клапан и я бью кулаками по столу... В голове WTF?!?!?!
Начинаю у него выяснять, а в ответ всё то же "Портал bitrix.domain.net не должен быть поддоменом сайта."
Я уже в отчаянии спрашиваю "Что вы вообще имеете в виду под сайтом? Какого сайта?". В ответ слышу "domain.net".
В голове в этот момент - "А, ну да! конечно же! Что-то я туплю!".
Тут я внезапно начинаю подозревать неладное и спрашиваю "Вы под сайтом имеете в виду сайт компании domain.net?".
Ответ - "Да."
@#$%%^$#&^!!!!! - Проносится в голове.
Я: - А при чём тут сайт? Он не связан с битрой, он находится на хостинге чёрт знает где. Я сейчас перенацелю DNS на битру и вы мне потом скажите, что "domain.net не может быть поддоменом net". Этак мы до корня DNS опустимся.

В итоге я от специалиста добился такого ответа, что "Если есть сайт domain.net и он расположен не на сервере битрикса, то самому порталу сайта нельзя присваивать имя любого из поддоменов domain.net".

А у нас bitrix.domain.net нацелен на сервак с битрой, а domain.net нацелен на сервак с сайтом и эти два сервера - это два разных сервера с разными IP. От этого происходит дублирование сессий.
Для меня это вообще странно.

Вот хочется услышать альтернативное мнение специалистов, которые работают с Битрикс. Верю, что есть на просторах интернета знающие люди.

Спасибо за внимание и простите за кучу букв.
  • Вопрос задан
  • 2409 просмотров
Пригласить эксперта
Ответы на вопрос 3
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
1С-Битрикс в последних обновлениях (20+) провела масштабную работу по безопасности продукта, а так же изменению внутренних подсистем. Одним из таких шагов было изменение механизма хранения сессионных файлов и cookie, что не могло не повлиять на "старый добрый 'все работало раньше'".
Ошибка которую вы приводите возникает из-за cookie `PHPSESSID`, которое хранит идентификатор сессии залогиненного пользователя. Для любого сайта cookie это не просто пара ключ-значение, а чуть более сложный механизм включающий время действия и домен который его выдал. В общей практике этому ключу должно соответствовать лишь одно значение - то, которое выдал сайт.

Что же происходит после последних обновлений?
Для удобства рассмотрим некоторую компанию: company.org. Cookie может быть выдано несколькими способами: на конкретный домен и на доменную группу, причем доменная группа это все подсайты текущего сайта. Если Б24 находит на поддомене b24.company.org, то куки с названием `PHPSESSID` может быть выдана и b24.company.org и company.org, таким образом для сайта company.org не будет никаких проблем, в то время как для Б24 это создаст огромные проблемы. Соответственно чем меньше уровень домена, тем больше сайтов могут на нее повлиять. Например для: spb.b24.company.org это могут сделать аж 3 сайта (spb.b24.company.org, b24.company.org, company.org).

Что делать?
Есть несколько вариантов. Например самый простой из них:
1) Смоделировать ошибку
2) Открыть консоль разработчика в браузера, вкладку с cookie
3) Посмотреть кем выдано лишнее cookie (там могут встретиться 2 записи: ".b24.company.org" и ".company.org"). Лишние cookie, это cookie которые не имеют в своем домене непосредственно адреса портала. В приведенном примере это ".company.org"
4) Перенастроить сайт "company.org" таким образом, чтобы он не выдавал cookie на доменную группу или сменить название cookie переменной.

Способ намного сложнее: можно изменить параметр `session.name` на веб-сервере где находится Битрикс24 с значения `PHPSESSID` на что-то более уникальное и модифицировать часть подсистем Битрикс24 чтобы они использовали новое название. Однако этот пункт с очень большой звездочкой, поэтому рекомендую выбрать простой вариант.
Ответ написан
@glebe
Есть два варианта решения
1. Перенести портал на другой домен. Можно на поддомен другого домена, но тогда тип записи в DNS должен быть А ( не CNAME).
2. Отключить галку в настройках главного модуля - распространять куки на все домены (это в админке). Это вариант помогает, если фронт отдаётся на nginx и он правильно настроен.
Ответ написан
Комментировать
@sanshung
1С-Битрикс программист
Решение на одном из доменов в .htaccess прописал php_value session.name "DPHPSESSID"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы