Как 1С работает через IIS и Apache: компонент веб-расширения, публикация базы, права и ошибки

· 9 мин

Содержание

Модули расширения веб-сервера 1С — это компонент платформы 1С:Предприятие 8.3, который учит IIS или Apache понимать запросы к информационной базе. Он ставится из обычного дистрибутива платформы отметкой «Модули расширения веб-сервера», после чего базу публикуют через Конфигуратор → Администрирование → Публикация на веб-сервере. Без этого компонента веб-клиент, тонкий клиент через интернет , веб-сервисы, HTTP-сервисы и OData не работают.

Частое заблуждение — считать, что модуль сам по себе и есть веб-сервер. Нет: это библиотека, которая подгружается внутрь чужого веб-сервера. Сам веб-сервер (IIS, Apache) нужно поставить отдельно, а модуль только подключается к нему и передаёт запросы платформе.

Как устроена цепочка «браузер → веб-сервер → база 1С»

Когда пользователь открывает адрес вида http://srv/base/, запрос проходит несколько звеньев:

  1. 🌐 Браузер или тонкий клиент отправляет HTTP-запрос на веб-сервер.
  2. 🧩 Веб-сервер видит, что адрес относится к публикации 1С, и передаёт запрос модулю расширения.
  3. 📄 Модуль читает файл default.vrd в каталоге публикации. В нём записана строка соединения с базой и список того, что опубликовано.
  4. 🗄️ Дальше модуль работает как клиент платформы: открывает файловую базу напрямую или подключается к кластеру серверов 1С.
  5. ↩️ Ответ уходит обратно по той же цепочке.

Получается, что для серверной базы веб-сервер — посредник между пользователем и кластером. Для файловой базы модуль сам открывает файл 1Cv8.1CD, поэтому вопрос прав на каталог базы встаёт особенно остро.

Какие файлы ставит компонент

Модуль — это набор библиотек в каталоге bin платформы. Под каждый веб-сервер своя библиотека:

Веб-серверWindowsLinux
IISwsisapi.dll—
Apache 2.2wsap22.dllwsap22.so
Apache 2.4wsap24.dllwsap24.so

В Windows библиотеки лежат в C:\Program Files\1cv8\<версия>\bin\, в Linux — в /opt/1cv8/x86_64/<версия>/. Утилита публикации webinst находится там же.

Разрядность модуля должна совпадать с разрядностью веб-сервера. 64-битный Apache не загрузит 32-битную wsap24.dll, и наоборот.

IIS, Apache или автономный сервер: что выбрать

У платформы нет встроенного полноценного веб-сервера, который можно поставить вместо IIS или Apache для рабочей эксплуатации. Зато в версиях 8.3.14 и выше есть автономный сервер ibsrv: он сам отвечает на HTTP-запросы и не требует внешнего веб-сервера. Его удобно использовать для разработки и небольших задач.

ВариантГде работаетКогда подходитЧто учесть
IIS + wsisapi.dllWindows Server, Windows 10/11Инфраструктура на Windows, администраторы привыкли к IISНужно включить роли ISAPI; права через пул приложений
Apache 2.4 + wsap24Windows и LinuxLinux-серверы, смешанные среды, публикация в интернет через обратный проксиПравка httpd.conf, перезапуск службы после публикации
Автономный сервер ibsrvWindows и LinuxТестовые стенды, разработка, демоОтдельный механизм, не замена кластеру для большого числа пользователей

На практике выбор обычно определяет операционная система. В Linux альтернатив Apache для модуля нет: модуля для nginx платформа не поставляет. Nginx используют только как обратный прокси перед Apache — для HTTPS, сжатия и ограничения доступа.

Установка модулей и публикация базы

Шаг 1. Поставить веб-сервер

Для IIS включите роль «Веб-сервер (IIS)» и в её составе:

  • ✅ «Расширения ISAPI»;
  • ✅ «Фильтры ISAPI»;
  • ✅ «Статическое содержимое» и «Документ по умолчанию»;
  • ✅ средства управления IIS (консоль).

Для Apache 2.4 в Windows скачайте сборку под нужную разрядность и зарегистрируйте службу командой httpd.exe -k install из каталога bin Apache.

Шаг 2. Доставить компонент платформы

Запустите setup.exe из дистрибутива той же версии, что и сервер 1С. В списке компонентов отметьте «Модули расширения веб-сервера». Если платформа уже стоит, выберите «Изменить» в «Программах и компонентах» и добавьте компонент.

Версия модуля должна совпадать с версией кластера серверов 1С до последней цифры. Иначе подключение к серверной базе завершится ошибкой о несоответствии версий.

Шаг 3. Опубликовать базу из Конфигуратора

  1. Запустите Конфигуратор от имени администратора — иначе он не сможет записать настройки веб-сервера.
  2. Откройте Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации (оно станет частью адреса), выберите веб-сервер и каталог, например C:\inetpub\wwwroot\base.
  4. Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData.
  5. Нажмите «Опубликовать».
  6. Для Apache перезапустите службу. После этого база доступна по адресу http://<сервер>/base/.

Шаг 3а. Опубликовать без Конфигуратора — через webinst

Утилита webinst удобна на серверах без графики и в скриптах. Пример для Apache 2.4 и серверной базы:

cd "C:\Program Files\1cv8\8.3.xx.xxxx\bin"
webinst -publish -apache24 -wsdir base -dir "C:\inetpub\wwwroot\base" -connstr "Srvr=srv1c;Ref=base;" -confpath "C:\Apache24\conf\httpd.conf"

Для IIS вместо -apache24 укажите -iis, а параметр -confpath не нужен. Удалить публикацию можно ключом -delete с теми же -wsdir и -dir.

Что появится после публикации

В httpd.conf Конфигуратор или webinst допишут блок примерно такого вида:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.xx.xxxx/bin/wsap24.dll"

# 1c publication
Alias "/base" "C:/inetpub/wwwroot/base/"
<Directory "C:/inetpub/wwwroot/base/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/inetpub/wwwroot/base/default.vrd"
</Directory>

А в каталоге публикации — файл default.vrd:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/base"
       ib="Srvr=&quot;srv1c&quot;;Ref=&quot;base&quot;;">
</point>

Строка LoadModule должна быть в конфигурации одна. Если базы публиковались из разных версий платформы, лишние строки появляются сами — и Apache перестаёт стартовать.

Права и учётные записи для веб-публикации

Модуль работает от имени того пользователя, под которым запущен веб-сервер. Отсюда большинство ошибок «всё настроено, а не открывается».

Кому нужны права

ОбъектКому дать доступКакие права
Каталог bin платформыПользователь веб-сервераЧтение и выполнение
Каталог публикации с default.vrdПользователь веб-сервераЧтение
Каталог файловой базыПользователь веб-сервераЧтение и запись (изменение)
Серверная база—Права на файлы не нужны: модуль подключается к кластеру по сети

Кто этот пользователь:

  • 🪟 IIS — удостоверение пула приложений. Для пула по умолчанию права выдают группе IIS_IUSRS и пользователю IUSR.
  • 🪶 Apache в Windows — учётная запись службы, по умолчанию «Локальная система». Её можно сменить на доменную в свойствах службы, если база лежит на сетевом ресурсе.
  • 🐧 Apache в Linux — www-data в Debian и Ubuntu, apache в RHEL-подобных системах.

Файловую базу на сетевой папке «Локальная система» не откроет: у неё нет прав в сети. Запускайте службу веб-сервера от доменной учётной записи с доступом к папке.

Авторизация пользователей 1С

Права на файлы — это только первый уровень. Дальше пользователь входит в саму базу: по имени и паролю 1С или через аутентификацию операционной системы. Для входа под доменной учётной записью в публикации включают аутентификацию ОС (у webinst есть ключ -osauth), а в IIS — проверку подлинности Windows.

Каждый пользователь веб-клиента занимает клиентскую лицензию так же, как пользователь тонкого клиента . Отдельных «веб-лицензий» нет.

Если база смотрит в интернет

Публикация открывает базу любому, кто знает адрес. Минимальный набор мер перед выходом наружу:

  • 🔒 включите HTTPS на веб-сервере и закройте доступ по обычному HTTP;
  • 🔑 проверьте, что у всех пользователей базы заданы пароли, а пользователь без пароля не входит;
  • 🚪 не пробрасывайте наружу порты кластера 1540–1541 и рабочих процессов: снаружи должен быть доступен только веб-сервер;
  • 🧱 ограничьте доступ по IP-адресам или VPN, если базой пользуются только сотрудники;
  • 📋 публикуйте только то, что нужно: если HTTP-сервисы и OData не используются, снимите их отметки в окне публикации.

Почему не подключается: разбор типовых ошибок

Начните с простого: откройте адрес публикации в браузере на самом сервере. Если там работает, а у пользователей нет — проблема в сети, брандмауэре или прокси, а не в модуле.

Диагностика: выберите симптом

Когда ошибка не похожа ни на одну из этих, смотрите журналы. В IIS это журнал событий Windows и каталог C:\inetpub\logs\LogFiles. В Apache — error.log в каталоге logs (в Linux обычно /var/log/apache2/error.log или /var/log/httpd/error_log). Текст ошибки модуля 1С там обычно приводится полностью.

Публикация 1С на Apache в Linux

В Linux веб-доступ к 1С строится только на Apache. Порядок такой.

  1. Установите Apache: sudo apt install apache2 в Debian/Ubuntu или sudo dnf install httpd в RHEL-подобных.
  2. Поставьте компонент веб-расширения. В едином установщике платформы его добавляют компонентом ws:
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws
  1. Создайте каталог публикации и опубликуйте базу:
sudo mkdir -p /var/www/base
cd /opt/1cv8/x86_64/8.3.xx.xxxx
sudo ./webinst -publish -apache24 -wsdir base -dir /var/www/base -connstr "Srvr=srv1c;Ref=base;" -confpath /etc/apache2/apache2.conf
  1. Перезапустите Apache: sudo systemctl restart apache2 (или httpd).

Особенности, на которых спотыкаются чаще всего:

  • 📁 Путь к конфигурации. В Debian/Ubuntu основной файл — /etc/apache2/apache2.conf, в RHEL-подобных — /etc/httpd/conf/httpd.conf. Укажете не тот — публикация «пройдёт», но Apache её не увидит.
  • 🛡️ SELinux. В RHEL-подобных системах он может запретить Apache читать библиотеки из /opt/1cv8 или ходить в сеть к кластеру. Ошибка в error_log будет про отказ в доступе. Проверьте журнал аудита, прежде чем выключать защиту целиком.
  • 👤 Файловая база. Каталог базы должен быть доступен на запись пользователю www-data или apache.
  • 🔤 Локаль. Если в журнале кракозябры или ошибки кодировки, проверьте, что в системе есть локаль ru_RU.UTF-8.

Перезапуск Apache обрывает текущие сеансы веб-клиентов и HTTP-сервисов. На рабочем сервере делайте это вне рабочего времени или предупредите пользователей.

Что сделать после обновления платформы

Самый частый сценарий поломки — не первая настройка, а обновление. Сервер 1С перевели на новую версию, а веб-публикация осталась на старой.

Порядок действий после обновления:

  1. Установите компонент «Модули расширения веб-сервера» новой версии на веб-сервер.
  2. Переопубликуйте базы из Конфигуратора новой версии или через webinst из её каталога.
  3. В Apache проверьте, что строка LoadModule одна и указывает на новый каталог.
  4. Удалите старую версию платформы только после проверки, что публикации работают.
Проверка публикации после обновления
Выполнено: 0 / 6

Частые вопросы

Можно ли опубликовать несколько баз на одном веб-сервере?
Да. У каждой базы своё имя публикации и свой каталог с default.vrd. Модуль загружается в веб-сервер один раз, а публикаций может быть сколько угодно.
Нужен ли веб-сервер на той же машине, что и сервер 1С?
Нет. Веб-сервер может стоять на отдельной машине, если у неё есть сетевой доступ к агенту кластера (порт 1540), менеджеру (1541) и диапазону портов рабочих процессов.
Как включить HTTPS для опубликованной базы?
HTTPS настраивается средствами самого веб-сервера: привязка сертификата в IIS или модуль ssl в Apache. Модуль 1С при этом ничего не меняет, адрес просто начинается с https.
Подойдёт ли nginx вместо Apache?
Модуля для nginx платформа не поставляет. Nginx можно поставить перед Apache как обратный прокси, а саму публикацию держать в Apache.
Тонкий клиент тоже работает через модули расширения?
Да, если в окне добавления базы выбрать подключение на веб-сервере и указать адрес публикации. Тогда тонкий клиент ходит к базе по HTTP через тот же модуль, что и браузер.