Docker: 403 Forbidden в Bitrix-окружении
Решение ошибки 403 Forbidden при развёртывании Bitrix в Docker — конфликт именованных томов, права доступа и force-recreate.
При развертывании 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пуста, хотя на хосте файлы есть.
docker-compose up -d --force-recreate
Флаг --force-recreate удалит старые контейнеры и создаст новые с правильными привязками томов.
docker-compose exec nginx ls -la /opt/www
Должны появиться index.php, bitrixsetup.php и другие файлы проекта.
Контейнеры 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"
Если видите "Type": "volume" для рабочей папки — пересоздайте контейнеры с --force-recreate.