Когда мы переводили наш сайт, и несколько клиентских сайтов на CMS Битрикс на связку nginx + php fpm мы столкнулись с проблемой белого экрана на публичной и административной части сайтов.
Версия nginx - nginx/1.20.0
Версия php - 7.4.19
Наша веб студия долго разбиралась в причинах этой проблемы, перепробовали стандартные методы по решению, но они не давали никакого результата.
В итоге мы пошли по цепочке подключаемых файлов начиная с
/bitrix/header.php
/bitrix/modules/main/include/prolog.php
/bitrix/modules/main/include/prolog_before.php
/bitrix/modules/main/include.php
В этом файле в куске кода -
foreach (GetModuleEvents("main", "OnPageStart", true) as $arEvent){ ExecuteModuleEventEx($arEvent); }
Подключается модуль проактивной защиты HostRestriction, который конфликтует с сервером и выдает такую ошибку, его нельзя отключить в админке полностью, а именно это нам и необходимо. Соответственно переводим сайт в режим работы от apache, заходим в админку, переходим в консоль php и вводим следующий скрипт:
\Bitrix\Main\Loader::includeModule('security'); $hostRestriction = new \Bitrix\Security\HostRestriction; $hostRestriction->setActive(false); $hostRestriction->save();
Теперь вы спокойно можете переводить режим работы на nginx + php-fpm и наслаждаться быстродействием вашего сайта.
Так же интересной для отладки и решения эта проблемы была тем, что в логах не было ошибок, с помощью которых можно было определить источник.