Сниппеты
Назад к сниппетам

Docker: 403 Forbidden в Bitrix-окружении

Решение ошибки 403 Forbidden при развёртывании Bitrix в Docker — конфликт именованных томов, права доступа и force-recreate.

docker
27 апреля 2026 г.

При развертывании Bitrix в Docker-контейнерах (особенно при использовании образов quay.io/bitrix24/nginx) можно столкнуться с ошибкой 403 Forbidden. Самая частая причина — «залипание» именованного тома (Named Volume): если сначала проект запускался с www_data:/opt/www, а затем конфиг изменили на ./www:/opt/www, Docker может продолжать использовать старый пустой том. Nginx ищет index.php, не находит его и запрещает листинг директории.

Симптомы
  • При открытии сайта отображается 403 Forbidden.
  • В логах Nginx: directory index of "/opt/www/" is forbidden.
  • Внутри контейнера /opt/www пуста, хотя на хосте файлы есть.
Решение 1. Принудительное пересоздание контейнеров
docker-compose up -d --force-recreate

Флаг --force-recreate удалит старые контейнеры и создаст новые с правильными привязками томов.

2. Проверка привязки
docker-compose exec nginx ls -la /opt/www

Должны появиться index.php, bitrixsetup.php и другие файлы проекта.

3. Права доступа (если 403 осталась)

Контейнеры Bitrix работают от пользователя bitrix (UID 979). На хосте:

# Вариант А: сделать владельцем bitrix
sudo chown -R 979:979 www/

# Вариант Б: открыть права (для локальной разработки)
chmod -R 755 www/
PHP не имеет прав на запись

При установке Bitrix может возникнуть: «PHP не имеет прав на запись в корневую папку /opt/www».

# Для локальной разработки
chmod -R 777 www/

# Или через chown на UID 979
sudo chown -R 979:979 www/
Диагностика

Через docker inspect проверьте тип монтирования — должен быть "Type": "bind", а не "Type": "volume":

docker inspect <container_id> | grep -A5 "Mounts"

Если видите &quot;Type&quot;: &quot;volume&quot; для рабочей папки — пересоздайте контейнеры с --force-recreate.