Как 1С работает через IIS и Apache: компонент веб-расширения, публикация базы, права и ошибки
Содержание
Модули расширения веб-сервера 1С — это компонент платформы 1С:Предприятие 8.3, который учит IIS или Apache понимать запросы к информационной базе. Он ставится из обычного дистрибутива платформы отметкой «Модули расширения веб-сервера», после чего базу публикуют через Конфигуратор → Администрирование → Публикация на веб-сервере. Без этого компонента веб-клиент, тонкий клиент через интернет
, веб-сервисы, HTTP-сервисы и OData не работают.
Частое заблуждение — считать, что модуль сам по себе и есть веб-сервер. Нет: это библиотека, которая подгружается внутрь чужого веб-сервера. Сам веб-сервер (IIS, Apache) нужно поставить отдельно, а модуль только подключается к нему и передаёт запросы платформе.
Как устроена цепочка «браузер → веб-сервер → база 1С»
Когда пользователь открывает адрес вида http://srv/base/, запрос проходит несколько звеньев:
- 🌐 Браузер или тонкий клиент отправляет HTTP-запрос на веб-сервер.
- 🧩 Веб-сервер видит, что адрес относится к публикации 1С, и передаёт запрос модулю расширения.
- 📄 Модуль читает файл
default.vrdв каталоге публикации. В нём записана строка соединения с базой и список того, что опубликовано. - 🗄️ Дальше модуль работает как клиент платформы: открывает файловую базу напрямую или подключается к кластеру серверов 1С.
- ↩️ Ответ уходит обратно по той же цепочке.
Получается, что для серверной базы веб-сервер — посредник между пользователем и кластером. Для файловой базы модуль сам открывает файл 1Cv8.1CD, поэтому вопрос прав на каталог базы встаёт особенно остро.
Какие файлы ставит компонент
Модуль — это набор библиотек в каталоге bin платформы. Под каждый веб-сервер своя библиотека:
| Веб-сервер | Windows | Linux |
|---|---|---|
| IIS | wsisapi.dll | — |
| Apache 2.2 | wsap22.dll | wsap22.so |
| Apache 2.4 | wsap24.dll | wsap24.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.dll | Windows Server, Windows 10/11 | Инфраструктура на Windows, администраторы привыкли к IIS | Нужно включить роли ISAPI; права через пул приложений |
Apache 2.4 + wsap24 | Windows и Linux | Linux-серверы, смешанные среды, публикация в интернет через обратный прокси | Правка httpd.conf, перезапуск службы после публикации |
Автономный сервер ibsrv | Windows и 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. Опубликовать базу из Конфигуратора
- Запустите Конфигуратор от имени администратора — иначе он не сможет записать настройки веб-сервера.
- Откройте
Администрирование → Публикация на веб-сервере. - Укажите имя публикации (оно станет частью адреса), выберите веб-сервер и каталог, например
C:\inetpub\wwwroot\base. - Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData.
- Нажмите «Опубликовать».
- Для 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="srv1c";Ref="base";">
</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. Порядок такой.
- Установите Apache:
sudo apt install apache2в Debian/Ubuntu илиsudo dnf install httpdв RHEL-подобных. - Поставьте компонент веб-расширения. В едином установщике платформы его добавляют компонентом
ws:
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws
- Создайте каталог публикации и опубликуйте базу:
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
- Перезапустите 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С перевели на новую версию, а веб-публикация осталась на старой.
Порядок действий после обновления:
- Установите компонент «Модули расширения веб-сервера» новой версии на веб-сервер.
- Переопубликуйте базы из Конфигуратора новой версии или через
webinstиз её каталога. - В Apache проверьте, что строка
LoadModuleодна и указывает на новый каталог. - Удалите старую версию платформы только после проверки, что публикации работают.