Публикация базы 1С 8.3 через IIS или Apache: от модулей до защищённого доступа
Содержание
Чтобы открыть 1С через браузер или тонкий клиент по HTTP, нужны три вещи: веб-сервер (IIS на Windows или Apache 2.4), установленные «Модули расширения веб-сервера» той же версии и разрядности, что и платформа, и публикация базы — из Конфигуратора (Администрирование → Публикация на веб-сервере) или утилитой webinst. Поверх ставят HTTPS-сертификат, иначе логины и пароли пользователей идут открытым текстом.
Ниже порядок, который работает и для файловой, и для клиент-серверной базы. Платформа — 8.3 актуальных релизов, сервер — Windows Server 2016 и новее либо Linux с Apache 2.4.
Какой веб-сервер выбрать для 1С и что подготовить
Оба варианта поддерживаются платформой. Выбор обычно диктует инфраструктура, а не 1С.
| Критерий | IIS | Apache 2.4 |
|---|---|---|
| ОС | Только Windows | Windows и Linux |
| Публикация из Конфигуратора | Да | Да |
| Модуль 1С | wsisapi.dll | wsap24.dll / wsap24.so |
| Управление | Диспетчер служб IIS | Конфигурационный файл httpd.conf / apache2.conf |
| Аутентификация ОС (Windows) | Встроенная | Нужны дополнительные модули |
| Когда брать | Домен Windows, сервер 1С на Windows | Сервер 1С на Linux, единый стек |
💡 Веб-сервер не обязан стоять на одной машине с сервером 1С. Для клиент-серверной базы его часто выносят на отдельный узел в DMZ, а сервер 1С остаётся во внутренней сети.
Что проверить до установки:
- 🖥️ Разрядность. 64-битный сервер 1С и 64-битный веб-сервер — самая беспроблемная пара. Модуль должен совпадать по разрядности с процессом веб-сервера.
- 🔢 Версия платформы. Модули ставятся из дистрибутива той же сборки, что и сервер 1С. Номер должен совпадать полностью, вплоть до последней цифры.
- 🔌 Порты. Снаружи открывают только 443 (и 80 — для переадресации на HTTPS). Порты кластера 1540, 1541 и диапазон рабочих процессов наружу не выставляют: их видит только веб-сервер.
- 👤 Учётная запись. Под какой учёткой работает веб-сервер, такой и нужно выдавать права на каталоги (об этом ниже).
Включение IIS в Windows Server
Откройте Диспетчер серверов → Управление → Добавить роли и компоненты и выберите роль «Веб-сервер (IIS)». В службах роли отметьте:
Разработка приложений → Расширения ISAPIиФильтры ISAPI— без них модуль 1С не загрузится.Безопасность → Обычная проверка подлинностииПроверка подлинности Windows— если планируете вход по учётке домена.Средства управления → Консоль управления IIS.
Установка Apache
На Linux Apache ставят из репозитория дистрибутива (apache2 в Debian/Ubuntu, httpd в RHEL-подобных). На Windows берут готовую 64-битную сборку Apache 2.4 и регистрируют службу командой httpd.exe -k install. Проверка, что сервер поднялся, — открыть http://localhost на самой машине.
Установка модулей расширения веб-сервера
Модуль — это компонент платформы, а не отдельный продукт. Запустите установщик технологической платформы на веб-сервере и в списке компонентов включите «Модули расширения веб-сервера». Если на этой же машине нужна публикация из Конфигуратора, оставьте и «1С:Предприятие» (толстый клиент с Конфигуратором).
После установки файлы лежат в каталоге bin платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin\:
wsisapi.dll— для IIS;wsap24.dll— для Apache 2.4 на Windows;webinst.exe— консольная утилита публикации.
На Linux ставят пакет ws из дистрибутива сервера (в составе пакетов — wsap24.so). Его версия, как и на Windows, должна совпадать с версией сервера 1С.
После обновления платформы на сервере 1С обновите и модули на веб-сервере, затем переопубликуйте базы. Иначе клиенты получат ошибку о несовпадении версий, а в httpd.conf останется путь к старому каталогу bin.
Публикация базы 1С на веб-сервере
Публикация создаёт каталог с файлом default.vrd и прописывает в настройках веб-сервера, какой модуль обрабатывает запросы к этому адресу. Сделать её можно двумя способами.
Способ 1. Из Конфигуратора
- Запустите 1С от имени администратора (правый клик по ярлыку) — без повышенных прав запись в настройки IIS и в
httpd.confне пройдёт. - Откройте базу в Конфигураторе: для клиент-серверной укажите сервер и имя базы в кластере.
- Выберите
Администрирование → Публикация на веб-сервере. - Заполните поля:
- Имя — часть адреса, например
buh. Пользователи будут заходить наhttps://сервер/buh. Латиница без пробелов. - Веб-сервер — IIS или Apache 2.4.
- Каталог — физическая папка публикации, например
C:\inetpub\wwwroot\buhилиC:\Apache24\htdocs\buh.
- Имя — часть адреса, например
- Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData. Лишнее не включайте — каждая галочка расширяет поверхность доступа.
- Для Apache укажите путь к его конфигурационному файлу.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Перезапуск Apache или IIS обрывает все текущие веб-сеансы. Если на сервере уже работают другие опубликованные базы, публикуйте вне рабочего времени.
Способ 2. Утилитой webinst
Утилита удобна на сервере без графической оболочки и в скриптах. Пример публикации клиент-серверной базы в Apache 2.4 на Linux:
cd /opt/1cv8/x86_64/8.3.xx.xxxx
sudo ./webinst -publish -apache24 \
-wsdir buh \
-dir /var/www/buh \
-connstr "Srvr=srv1c;Ref=buh_prod;" \
-confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2
Пример для IIS на Windows и файловой базы:
cd "C:\Program Files\1cv8\8.3.xx.xxxx\bin"
webinst.exe -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "File=""D:\Bases\Buh"";"
Параметр -delete вместо -publish снимает публикацию. Полный список ключей выводит запуск утилиты без параметров.
Что появится в httpd.conf
После публикации в Apache в конце файла добавляется блок такого вида (путь и версия ваши):
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.xx.xxxx/bin/wsap24.dll"
Alias "/buh" "C:/Apache24/htdocs/buh/"
<Directory "C:/Apache24/htdocs/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Apache24/htdocs/buh/default.vrd"
</Directory>
Строка LoadModule должна встречаться один раз на весь файл, даже если баз опубликовано десять.
Подключение пользователей
- 🌐 Веб-клиент — адрес
https://сервер/buhв браузере. - 💻 Тонкий клиент — в списке баз добавьте существующую базу, тип расположения «На веб-сервере», адрес тот же. В строке соединения это выглядит как
ws="https://сервер/buh";.
Права доступа и HTTPS-сертификат
Какие права выдать
Запросы обрабатывает процесс веб-сервера. Его учётной записи нужны:
| Каталог | Кому | Права |
|---|---|---|
Каталог публикации (default.vrd) | IIS_IUSRS или учётка службы Apache | Чтение |
Каталог bin платформы | Та же учётка | Чтение и выполнение |
| Каталог файловой базы | Та же учётка | Изменение |
Для клиент-серверной базы права на каталог базы не нужны: данные хранит сервер 1С, веб-сервер только передаёт запросы.
Аутентификация
Пользователь 1С с паролем — базовый вариант. Вход по учётной записи Windows настраивают в карточке пользователя 1С (флажок аутентификации операционной системы) и в IIS — проверка подлинности Windows на приложении публикации. Анонимный доступ к сайту с автоматическим входом в 1С под фиксированным пользователем (логин и пароль в default.vrd) годится только для веб-сервисов внутри закрытой сети.
Включение HTTPS в IIS
- Получите сертификат: от удостоверяющего центра, бесплатный Let’s Encrypt через клиент win-acme или внутренний из корпоративного ЦС, если доступ только из домена.
- В Диспетчере служб IIS выберите сайт → «Привязки» → «Добавить»: тип
https, порт 443, сертификат из списка. - Включите «Требовать SSL» в параметрах SSL приложения публикации.
- Привязку
httpлибо удалите, либо настройте переадресацию на HTTPS модулем URL Rewrite.
Включение HTTPS в Apache
На Linux с публичным доменом проще всего certbot: он сам получит сертификат Let’s Encrypt, пропишет его в конфигурацию и настроит автопродление. Вручную блок выглядит так:
<VirtualHost *:443>
ServerName 1c.example.ru
SSLEngine on
SSLCertificateFile /etc/ssl/1c/fullchain.pem
SSLCertificateKeyFile /etc/ssl/1c/privkey.pem
</VirtualHost>
Модуль mod_ssl должен быть включён (a2enmod ssl в Debian/Ubuntu).
Самоподписанный сертификат подходит для теста, но тонкий клиент и браузер будут ругаться на недоверенный центр. Для рабочих мест в домене выпускайте сертификат корпоративным ЦС — его корень уже доверен на компьютерах.
Производительность и масштабирование веб-доступа
Веб-сервер сам по себе почти не нагружается: основную работу делает сервер 1С. Узкие места обычно другие.
- 📁 Файловая база за веб-сервером. Работает, но при 5–10 активных пользователях начинаются блокировки и подвисания. Для постоянной работы через интернет переводите базу в клиент-серверный вариант.
- ♻️ Повторное использование сеансов веб-сервисов. Каждый вызов SOAP- или HTTP-сервиса без настройки открывает новый сеанс 1С, а это заметные доли секунды и лицензия. В
default.vrdдля веб-сервисов задают атрибутreuseSessions(значенияuseилиautouse), время жизни сеанса и размер пула. Для интеграций с частыми вызовами это даёт кратный выигрыш. - 🔁 Пул приложений IIS. Отключите плановый перезапуск пула в рабочие часы: при перезапуске сеансы веб-клиента обрываются. Разрядность пула должна совпадать с модулем: для 64-битного
wsisapi.dllпараметр «Разрешить 32-разрядные приложения» =False. - 🗜️ Сжатие. Включите динамическое сжатие в IIS или
mod_deflateв Apache — трафик веб-клиента заметно сокращается, особенно на медленных каналах.
Когда нужен второй веб-сервер
Если пользователей сотни, ставят два-три веб-сервера с одинаковой публикацией и балансировщик перед ними (nginx, HAProxy или аппаратный). Сессия веб-клиента должна «прилипать» к одному узлу: включите на балансировщике привязку по IP или cookie. Все веб-серверы смотрят на один кластер 1С, и нагрузку дальше распределяет уже он.
Диагностика ошибок подключения к опубликованной базе
Начинайте с самого простого: откройте адрес публикации в браузере прямо на веб-сервере. Ошибка видна сразу — значит, дело в сервере, а не в сети или клиенте.
Где смотреть подробности:
- 📜 журнал ошибок Apache —
error.logв каталогеlogs(на Linux обычно/var/log/apache2/); - 📜 журналы IIS —
C:\inetpub\logs\LogFiles, плюс журнал событий Windows «Приложение»; - 🧭 технологический журнал 1С на сервере кластера — если запрос дошёл до сервера, но упал там.
Частые вопросы
Нужна ли отдельная лицензия для веб-доступа к 1С?
Можно ли опубликовать несколько баз на одном веб-сервере?
/buh и /zup. Модуль загружается один раз, а публикаций может быть сколько угодно.