Публикация базы 1С 8.3 через IIS или Apache: от модулей до защищённого доступа

· 9 мин

Содержание

Чтобы открыть 1С через браузер или тонкий клиент по HTTP, нужны три вещи: веб-сервер (IIS на Windows или Apache 2.4), установленные «Модули расширения веб-сервера» той же версии и разрядности, что и платформа, и публикация базы — из Конфигуратора (Администрирование → Публикация на веб-сервере) или утилитой webinst. Поверх ставят HTTPS-сертификат, иначе логины и пароли пользователей идут открытым текстом.

Ниже порядок, который работает и для файловой, и для клиент-серверной базы. Платформа — 8.3 актуальных релизов, сервер — Windows Server 2016 и новее либо Linux с Apache 2.4.

Какой веб-сервер выбрать для 1С и что подготовить

Оба варианта поддерживаются платформой. Выбор обычно диктует инфраструктура, а не 1С.

КритерийIISApache 2.4
ОСТолько WindowsWindows и Linux
Публикация из КонфигуратораДаДа
Модуль 1Сwsisapi.dllwsap24.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)». В службах роли отметьте:

  1. Разработка приложений → Расширения ISAPI и Фильтры ISAPI — без них модуль 1С не загрузится.
  2. Безопасность → Обычная проверка подлинности и Проверка подлинности Windows — если планируете вход по учётке домена.
  3. Средства управления → Консоль управления 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. Запустите 1С от имени администратора (правый клик по ярлыку) — без повышенных прав запись в настройки IIS и в httpd.conf не пройдёт.
  2. Откройте базу в Конфигураторе: для клиент-серверной укажите сервер и имя базы в кластере.
  3. Выберите Администрирование → Публикация на веб-сервере.
  4. Заполните поля:
    • Имя — часть адреса, например buh. Пользователи будут заходить на https://сервер/buh. Латиница без пробелов.
    • Веб-сервер — IIS или Apache 2.4.
    • Каталог — физическая папка публикации, например C:\inetpub\wwwroot\buh или C:\Apache24\htdocs\buh.
  5. Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData. Лишнее не включайте — каждая галочка расширяет поверхность доступа.
  6. Для Apache укажите путь к его конфигурационному файлу.
  7. Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.

Перезапуск 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

  1. Получите сертификат: от удостоверяющего центра, бесплатный Let’s Encrypt через клиент win-acme или внутренний из корпоративного ЦС, если доступ только из домена.
  2. В Диспетчере служб IIS выберите сайт → «Привязки» → «Добавить»: тип https, порт 443, сертификат из списка.
  3. Включите «Требовать SSL» в параметрах SSL приложения публикации.
  4. Привязку 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С, и нагрузку дальше распределяет уже он.

Перед запуском веб-доступа для пользователей
Выполнено: 0 / 6

Диагностика ошибок подключения к опубликованной базе

Начинайте с самого простого: откройте адрес публикации в браузере прямо на веб-сервере. Ошибка видна сразу — значит, дело в сервере, а не в сети или клиенте.

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

Где смотреть подробности:

  • 📜 журнал ошибок Apache — error.log в каталоге logs (на Linux обычно /var/log/apache2/);
  • 📜 журналы IIS — C:\inetpub\logs\LogFiles, плюс журнал событий Windows «Приложение»;
  • 🧭 технологический журнал 1С на сервере кластера — если запрос дошёл до сервера, но упал там.

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

Нужна ли отдельная лицензия для веб-доступа к 1С?
Отдельной «веб-лицензии» нет. Пользователь веб-клиента или тонкого клиента через HTTP занимает обычную клиентскую лицензию, как при прямом подключении. Для клиент-серверной базы дополнительно нужна лицензия на сервер 1С.
Можно ли опубликовать несколько баз на одном веб-сервере?
Да. Каждая база публикуется под своим именем и в свой каталог, например /buh и /zup. Модуль загружается один раз, а публикаций может быть сколько угодно.
Какие браузеры подходят для веб-клиента?
Актуальные версии Chrome, Edge, Firefox, Safari и Яндекс Браузера. Перечень зависит от версии платформы, поэтому при старом релизе современный браузер может работать с ограничениями.
Обязательно ли выставлять сервер в интернет, чтобы работать удалённо?
Нет. Вместо публикации наружу можно оставить веб-сервер во внутренней сети и пускать сотрудников через VPN. Это безопаснее: страница входа 1С не видна сканерам.
Почему тонкий клиент через веб-сервер работает медленнее прямого подключения?
HTTP добавляет накладные расходы на каждый вызов сервера. Разница заметна на тяжёлых формах и отчётах. Помогают сжатие на веб-сервере, нормальный канал и клиент-серверная база вместо файловой.