При работе с веб-сервером Apache в связке с платформой 1С:Предприятие часто возникает задача публикации нескольких информационных баз. Однако ситуация кардинально усложняется, когда эти базы требуют использования разных минорных или мажорных релизов платформы 1С. Рассмотрим, почему при попытке одновременной работы возникают ошибки вида HTTP: Unsupported media type или HTTP: Conflict, и как с этим справиться.
Основная причина возникновения ошибок при одновременной работе баз на разных версиях платформы заключается в механизме взаимодействия веб-сервера с модулями расширения 1С. Веб-сервер Apache загружает в свою оперативную память динамические библиотеки (например, wsap24.dll в Windows или аналогичные модули в Linux).
Когда вы публикуете базу, в конфигурации Apache (файл httpd.conf или в директории conf.d) прописываются директивы LoadModule, указывающие на конкретную версию библиотеки wsap24.dll. Проблема в том, что внутри одного процесса Apache невозможно одновременно загрузить две разные версии этой библиотеки. Как только одна база пытается обратиться к своей версии платформы, а другая — к своей, возникает конфликт, который приводит к некорректной работе XDTO-сериализации и падению веб-клиента.
Самым надежным и архитектурно верным решением является полное разделение ресурсов. Мы не можем заставить один процесс Apache «понимать» две разные версии платформы 1С, поэтому нам нужно создать два отдельных веб-сервера.
wsap24.dll, что исключит любые конфликты версий.Если вы хотите, чтобы для внешнего мира все базы выглядели как работающие на одном порту (например, 80 или 443), мы рекомендуем использовать архитектуру «обратного прокси». В этой схеме Nginx выступает в роли «фасада»:
nginx.conf таким образом, чтобы входящие запросы к определенным URL перенаправлялись на соответствующий внутренний порт:
location /base1 {
proxy_pass http://127.0.0.1:8080;
}
location /base2 {
proxy_pass http://127.0.0.1:8081;
}
Этот подход является современным стандартом в IT-инфраструктуре, так как он обеспечивает масштабируемость и полную независимость настроек для каждой информационной базы.
Для пользователей Linux-систем мы настоятельно рекомендуем рассмотреть переход на использование Docker. Это решение позволяет упаковать каждую базу 1С вместе с требуемой версией платформы и веб-сервером в отдельный изолированный контейнер.
Преимущества контейнеризации:
Попытка «подружить» разные версии платформы 1С внутри одного экземпляра Apache — это тупиковый путь, ведущий к ошибкам XDTO и проблемам с Unsupported media type. Чтобы система работала стабильно, мы должны обеспечить физическое разделение процессов веб-сервера либо через разные порты, либо через прокси-серверы, либо через контейнеры.
Если проект позволяет, самый простой способ избежать данных проблем — привести все информационные базы к одной версии платформы 1С, что упростит администрирование и обновление всей системы в целом.