Веб-доступ к базам 1С давно перестал быть экзотикой. Бухгалтер работает из дома, менеджер проверяет склад с планшета, директор смотрит отчёты из командировки - всё это через браузер. Но чтобы связка «веб-сервер + 1С» заработала, нужен посредник. Этот посредник - модуль расширения веб-сервера 1С.
Если коротко: это программный компонент, который встраивается в Apache или IIS и транслирует HTTP-запросы в язык, понятный платформе 1С:Предприятие. Физически это одна библиотека: wsisapi.dll для IIS, wsap24.dll для Apache под Windows, wsap24.so для Apache под Linux. Без неё веб-сервер просто не знает, что делать с обращениями к базе 1С.
Сразу разведём два похожих названия. Модуль расширения веб-сервера - это про публикацию базы в браузере. Расширение конфигурации (файл .cfe) - совсем другой механизм: доработка прикладного решения без снятия с поддержки. Если вы искали второе, эта статья не о том.
Платформа 1С:Предприятие не умеет напрямую общаться с браузерами. Она рассчитана на работу через клиентские приложения или специальные протоколы. Веб-сервер тоже не понимает специфику 1С. Модуль расширения решает эту проблему: он принимает HTTP-запросы, передаёт их в 1С, получает ответ и отправляет обратно пользователю в виде HTML-страницы.
Кроме публикации пользовательских интерфейсов, через модуль разворачивают и веб-сервисы. Это важно для интеграции 1С с другими системами - CRM, складским учётом, интернет-магазинами. Вы настраиваете веб-сервис внутри 1С, публикуете его через модуль расширения, и внешние приложения могут обращаться к вашей базе по HTTP.
Модуль расширения входит в стандартный дистрибутив 1С:Предприятие. Отдельно искать его не нужно - он уже есть в установочных файлах платформы. Отсюда же ответ на частый вопрос: ставить всю платформу целиком на веб-сервер не обязательно, достаточно выбрать в установщике компонент «Модули расширения веб-сервера». Но версия этого компонента должна совпадать с версией платформы, к которой он будет обращаться.
Установка на Windows обычно проходит гладко, если у вас есть права администратора и правильная версия платформы. Модуль расширения должен точно соответствовать версии 1С:Предприятие, которая развёрнута на сервере. Несовпадение версий - частая причина проблем.
Процесс начинается с запуска установщика из дистрибутива 1С. В меню выбора компонентов нужно отметить «Модуль расширения веб-сервера». Установщик скопирует нужные файлы в каталог платформы.
Для IIS модуль поставляется DLL-библиотекой wsisapi.dll, которая регистрируется как расширение ISAPI. После установки нужно зайти в диспетчер IIS, создать виртуальный каталог для публикации 1С и прописать путь к модулю в настройках обработчиков. IIS довольно требователен к правам доступа - убедитесь, что учётная запись пула приложений имеет доступ к каталогам 1С.
Если у вас Apache на Windows, в каталог modules веб-сервера копируется файл wsap24.dll (для Apache 2.4; под 2.2 использовался wsap22.dll). В конфигурационном файле httpd.conf нужно добавить директиву LoadModule и указать путь к этому файлу.
На Linux процесс чуть менее автоматизирован, но особых сложностей тоже не вызывает. Модуль расширения для Linux - это файл с расширением .so, который подключается к Apache.
Сначала убедитесь, что платформа 1С:Предприятие установлена и работает. Файлы модуля лежат в каталоге платформы, обычно это /opt/1cv8/x86_64/<версия>/ (в старых сборках - /opt/1C/v8.3/x86_64/). Для Apache 2.4 нужен файл wsap24.so, для Apache 2.2 - wsap22.so.
В конфигурацию Apache добавляется загрузка модуля:
LoadModule _1cws_module /opt/1cv8/x86_64/8.3.24.1467/wsap24.so
Обратите внимание на имя директивы: именно _1cws_module, а не _1c_module. С неправильным именем Apache не стартует вовсе, и в логе будет невнятная жалоба на конфигурацию. Версию в пути подставьте свою - она меняется при каждом обновлении платформы, и старый путь после апдейта перестанет существовать.
В Debian и Ubuntu подключение принято выносить в отдельный файл /etc/apache2/mods-available/wsap24.load, в CentOS и RHEL - в /etc/httpd/conf.modules.d/wsap24.conf. Так конфигурация переживает обновления пакетов веб-сервера.
Права доступа тоже важны: пользователь, от имени которого работает Apache, должен читать библиотеки платформы и обращаться к каталогам с базами.
Модуля расширения под nginx у 1С нет. Компонент выпускается только под Apache и IIS, и никакой библиотеки вроде «wsng» в дистрибутиве вы не найдёте.
Это не значит, что nginx с 1С не используют. Используют, и часто, но в другой роли - как обратный прокси перед Apache или IIS. Схема такая: nginx принимает запросы снаружи, терминирует SSL, раздаёт статику, фильтрует по IP, а всё, что относится к 1С, передаёт директивой proxy_pass на локальный Apache, где и стоит модуль расширения. Сам Apache слушает только петлевой интерфейс и наружу не смотрит.
Такая связка даёт удобство nginx на фронте и работающую публикацию 1С на бэкенде. Единственное, за чем нужно следить, - заголовки: при проксировании передавайте Host и X-Forwarded-*, иначе веб-клиент 1С будет строить ссылки по внутреннему адресу.
У каждого веб-сервера свои особенности интеграции с 1С:
| Веб-сервер | Файл модуля | Способ подключения | Особенности настройки |
|---|---|---|---|
| IIS (Windows) | wsisapi.dll | Регистрация как ISAPI-расширение | Настройка пула приложений, права учётной записи пула на каталоги 1С |
| Apache (Windows) | wsap24.dll | Директива LoadModule _1cws_module в httpd.conf | Виртуальные хосты, пути к базам |
| Apache (Linux) | wsap24.so (для 2.2 - wsap22.so) | Директива LoadModule _1cws_module | Права пользователя Apache на каталоги платформы и баз |
| nginx | своего модуля нет | Обратный прокси на Apache или IIS | proxy_pass на локальный веб-сервер с модулем, проброс Host и X-Forwarded-* |
После подключения модуля настраивается публикация конкретных баз - и это отдельный шаг, который часто путают с установкой самого модуля.
Модуль сам по себе ничего не публикует. Он лишь учит веб-сервер понимать 1С. Чтобы база открылась по адресу, её нужно опубликовать, и делается это одним из двух способов.
Из конфигуратора. Пункт «Администрирование → Публикация на веб-сервере». Указываете имя публикации (оно станет частью URL), каталог, веб-сервер и что именно публикуем - веб-клиент, веб-сервисы, HTTP-сервисы. Самый простой путь, если конфигуратор запускается на той же машине, где стоит веб-сервер.
Утилитой webinst из каталога платформы. Годится для Linux и для автоматизации:
webinst -publish -apache24 -wsdir Base -dir /var/www/Base \
-connstr 'Srvr="server1c";Ref="Base";' \
-confPath /etc/apache2/apache2.conf
Для файловой базы строка подключения выглядит иначе: -connstr 'File="D:\Bases\Base";'. Тип веб-сервера задаётся ключом -apache24, -apache22 или -iis. У файлового режима свои оговорки по правам и блокировкам - разбирали их отдельно в материале про веб-доступ к 1С в файловом режиме.
Что появляется после публикации, полезно понимать - дальше вы будете чинить именно это:
Дальше база доступна по адресу вида http://ваш-сервер/Base. Если нужно поменять состав публикации или строку подключения, правится default.vrd, а не настройки модуля. Подробнее про содержимое дескриптора и различия между платформами мы разбирали в статье про веб-сервер для 1С.
После любой правки конфига веб-сервер нужно перезапустить, иначе изменения не подхватятся.
После установки и настройки нужно убедиться, что всё работает. Самый простой способ - открыть браузер и обратиться к опубликованной базе по адресу http://ваш-сервер/имя-публикации. Если всё настроено правильно, откроется страница входа в 1С.
Если хочется проверить отдельно, загрузился ли сам модуль, не дожидаясь ошибок публикации:
Такая проверка экономит время: она сразу делит проблемы на «модуль не встал» и «модуль встал, но база опубликована неправильно».
Логи смотрите там же, где обычно: в Apache это error.log, в IIS - журнал событий Windows и логи самого сайта.
Задача возникает чаще, чем кажется: нужно обновить конфигурацию, закрыть доступ на время работ или просто убрать старую публикацию. Способ зависит от того, насколько надолго.
Убрать публикацию совсем. Той же утилитой, что и публиковали:
webinst -delete -apache24 -wsdir Base -confPath /etc/apache2/apache2.conf
Из конфигуратора то же самое делается кнопкой «Отключить» в окне публикации. Файл default.vrd после этого можно удалить вручную.
Закрыть на время. Не трогая публикацию, достаточно остановить сайт в IIS или закомментировать блок Alias в конфиге Apache и перезапустить веб-сервер. Пользователи получат ошибку подключения, а настройки останутся на месте.
Отключить сам модуль. Комментируем строку LoadModule и перезапускаем Apache; в IIS убираем сопоставление обработчика. Это выключит веб-доступ ко всем базам сразу, так что годится для профилактических работ; чтобы закрыть одну публикацию, смотрите способы выше.
Публикация базы 1С в интернете или даже в локальной сети - потенциальный риск. Веб-сервер становится точкой входа в вашу учётную систему, поэтому о защите нужно подумать заранее.
Во-первых, используйте HTTPS. Передача данных по незашифрованному протоколу - плохая идея, особенно если речь о финансовой информации. Настройте SSL-сертификат на веб-сервере и перенаправляйте все HTTP-запросы на HTTPS.
Во-вторых, правильно настройте аутентификацию. Модуль расширения поддерживает несколько режимов: аутентификацию средствами 1С, аутентификацию Windows (для IIS), базовую HTTP-аутентификацию. Выбирайте в зависимости от инфраструктуры, но в любом случае не оставляйте базы без пароля.
В-третьих, ограничьте доступ на уровне веб-сервера. Если база нужна только внутренним пользователям, настройте фильтрацию по IP-адресам. Если публикуете веб-сервисы для внешних систем, используйте API-ключи или токены аутентификации.
Не забывайте про права доступа к файлам на сервере. Учётная запись, от имени которой работает веб-сервер, должна иметь минимально необходимые права: только чтение для каталогов с платформой 1С и чтение-запись для каталогов с базами данных, если используется файловый режим.
И отдельно: в default.vrd строка подключения к базе лежит открытым текстом. Каталог публикации не должен отдаваться на скачивание, и сам файл посторонние читать не должны.
Многие думают, что модуль расширения нужен только для работы пользователей через браузер. Но это половина его возможностей. Вторая половина - публикация веб-сервисов для интеграции с внешними системами.
Веб-сервис в 1С - это набор функций, которые можно вызывать по HTTP из других приложений. Например, ваша CRM может запросить у 1С список товаров, отправить новый заказ, получить остатки на складе.
Создаёте веб-сервис в конфигураторе, публикуете его через модуль расширения, и он становится доступен по определённому URL. Внешние системы обращаются к этому URL, передают параметры в формате XML или JSON, получают ответ и обрабатывают его.
Это удобнее, чем прямое подключение к базе или файловый обмен. Веб-сервисы работают в реальном времени, не требуют доступа к серверу баз данных и защищаются стандартными средствами веб-серверов.
Даже при аккуратной установке что-то идёт не так. Типичные ситуации собраны в таблицу - по симптому проще искать.
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Apache не запускается после правки конфига | Опечатка в имени директивы или неверный путь к .so | Проверить, что написано LoadModule _1cws_module, и что файл по указанному пути существует. После обновления платформы путь с версией меняется |
| 404 при обращении к публикации | Публикации нет или имя в URL другое | Проверить Alias в конфиге и наличие default.vrd в каталоге публикации |
| 500 Internal Server Error | Нет прав у учётной записи веб-сервера либо разрядность модуля не совпадает с разрядностью Apache | Проверить права на каталоги платформы и баз; убедиться, что 64-битный модуль стоит с 64-битным Apache |
| 502 Bad Gateway | Веб-сервер не достучался до платформы | Проверить, запущен ли сервер 1С, верна ли строка подключения в default.vrd, открыт ли порт |
| Страница открылась, но «поехала»: нет стилей, не работают кнопки | Веб-сервер не отдаёт статику | Проверить, что статические файлы отдаются напрямую, без передачи в модуль |
| «Информационная база заблокирована» или «Начало сеанса с информационной базой запрещено» | В консоли кластера включена блокировка начала сеансов, чаще всего оставленная после обновления | Снять флаг «Блокировка начала сеансов включена» в свойствах базы |
| Конфигуратор не даёт обновить конфигурацию, требует монопольный доступ | Веб-сеансы держат базу: браузерные подключения считаются такими же сеансами | Завершить сеансы в консоли кластера, на время работ закрыть публикацию и только потом обновлять |
| «Сервер не отвечает» под нагрузкой | Не хватает рабочих процессов 1С или потоков веб-сервера | Увеличить число рабочих процессов в кластере и параллельных соединений в веб-сервере |
Про последние две строки стоит сказать отдельно, потому что они дают больше всего вопросов. Публикация в вебе - это постоянно живущие сеансы. Пользователь закрыл вкладку, а сеанс ещё какое-то время висит, и конфигуратор честно сообщает, что монопольный доступ получить не может. Правильный порядок при обновлении: закрыть публикацию или включить блокировку начала сеансов, дождаться завершения активных сеансов, обновить конфигурацию, снять блокировку.
Для более глубокой диагностики включите подробное логирование: в 1С - через технологический журнал и консоль администрирования кластера, в веб-сервере - через конфигурационные файлы.
Модуль расширения жёстко привязан к платформе. Версия модуля должна совпадать с версией платформы полностью, включая номер сборки (например, 8.3.24.1467). Старый модуль с новой платформой в лучшем случае даст непредсказуемые ошибки, новый со старой не заработает вовсе.
Отсюда важное следствие про обновления: обновили платформу - переподключите модуль. Порядок такой:
Про этот шаг забывают чаще всего: платформу обновили, а веб-доступ отвалился, потому что Apache продолжает искать библиотеку по несуществующему пути.
Поддержка операционных систем: Windows Server и распространённые дистрибутивы Linux, включая отечественные - Astra Linux, «Альт», РЕД ОС. На клиентских версиях Windows модуль тоже ставится, но это разумно только для тестового стенда.
Веб-серверы: IIS и Apache 2.4 (устаревшая ветка 2.2 ещё встречается, но её лучше не закладывать в новые внедрения). Nginx, как разобрано выше, ставится перед ними обратным прокси, а не вместо них.
Если растёт количество пользователей или критична непрерывность работы, одного сервера с модулем расширения может быть мало. Тогда разворачивают распределённую схему: несколько веб-серверов с модулем, балансировщик перед ними и кластер серверов 1С на бэкенде. Балансировщик распределяет запросы, и отказ одного веб-сервера не останавливает работу.
При такой схеме важно правильно настроить сессии. Веб-сеансы 1С привязаны к конкретному рабочему процессу, поэтому балансировщик должен направлять повторные запросы одного пользователя на тот же сервер - это режим sticky sessions.
Для мониторинга используйте средства веб-серверов и консоль кластера 1С. Отслеживать стоит количество активных сеансов, время отклика, загрузку процессора и памяти: это помогает заметить проблему до того, как о ней сообщат пользователи.
Отдельный вопрос - хватает ли самого железа под нагрузку. Веб-публикация добавляет к обычной работе платформы ещё один слой процессов, и на сервере, который еле тянул толстых клиентов, веб-клиент ситуацию не улучшит. Мы разбирали, какие требования предъявляет сервер 1С и когда пора расширять кластер серверов 1С.
Модуль расширения веб-сервера 1С - ключевой элемент удалённой работы и интеграций. Правильная установка, аккуратная публикация и понимание того, где что лежит, снимают большую часть проблем ещё до их появления.
Подбираете сервер под 1С с веб-доступом?
Инженеры ITTELO соберут сервер для 1 с под вашу нагрузку - число пользователей, режим работы, веб-публикация и кластер, - протестируют его перед отгрузкой и поддержат после продажи. На рынке серверов 11+ лет.