Публикация базы 1С через IIS и Apache: роль веб-сервера, настройка и защита

· 9 мин

Содержание

Веб-сервер для 1С нужен, когда к базе подключаются через браузер, тонкий клиент по HTTP, мобильное приложение или внешние системы по HTTP-сервисам, веб-сервисам и OData. Если все работают в одной локальной сети через обычный тонкий клиент, IIS и Apache не требуются: клиент подключается к файловой базе напрямую или к кластеру серверов 1С по портам 1540–1541.

Частое заблуждение — считать веб-сервер «ускорителем» или заменой сервера 1С:Предприятия. Он ничего не вычисляет и данные не хранит. Это посредник: принимает HTTP-запросы, передаёт их модулю расширения 1С, а тот уже работает с базой. Настройка сводится к трём вещам: установить модуль расширения, опубликовать базу и дать права нужной учётной записи.

Зачем веб-сервер в архитектуре 1С

Схема с веб-сервером выглядит так:

  1. Пользователь открывает адрес вида https://1c.company.ru/buh в браузере или в тонком клиенте.
  2. IIS или Apache видит, что путь /buh обслуживает модуль 1С, и отдаёт запрос ему.
  3. Модуль расширения читает файл default.vrd публикации и узнаёт, где лежит база: путь к файловой базе или строку Srvr=...;Ref=....
  4. Для файловой базы модуль открывает её сам, в процессе веб-сервера. Для клиент-серверной — обращается к кластеру как обычный клиент.

Отсюда практичный вывод: веб-сервер — это «окно» в базу снаружи. Сама база может стоять на другом компьютере.

Когда без веб-сервера не обойтись

  • 🌐 Веб-клиент — работа из браузера без установки платформы.
  • 🖥️ Тонкий клиент через интернет — подключение по HTTP/HTTPS вместо прямого доступа к кластеру. Наружу открывается только порт 443, порты кластера остаются внутри сети.
  • 📱 Мобильный клиент и мобильные приложения на платформе 1С, которые обмениваются данными с центральной базой.
  • 🔗 Интеграции: HTTP-сервисы, веб-сервисы (SOAP), стандартный интерфейс OData — сайт, маркетплейс, курьерская служба, BI-система.
  • 🏢 Удалённые филиалы без VPN и RDP: тонкий клиент по HTTPS часто проще, чем терминальный сервер .

Когда он не нужен

  • Все пользователи в одной сети и работают через тонкий или толстый клиент.
  • Удалённые сотрудники заходят через RDP или RemoteApp на терминальный сервер. Там 1С запускается локально, и веб-сервер не участвует.

Веб-клиент и тонкий клиент через веб-сервер тоже занимают клиентские лицензии 1С. Публикация не обходит лицензирование, она меняет только способ подключения.

IIS или Apache: что выбрать под 1С

Платформа 1С 8.3 поставляет модули для обоих веб-серверов. Модуль для IIS — wsisapi.dll, для Apache 2.4 — wsap24.dll (на Linux — wsap24.so). Они ставятся компонентом «Модули расширения веб-сервера» в установщике платформы.

КритерийIISApache 2.4
ОСТолько Windows (Server или настольная)Windows и Linux
УстановкаРоль в «Диспетчере серверов»Отдельный дистрибутив, на Windows обычно сборка Apache Lounge
Публикация из КонфигуратораДа, без правки файловДа, правится httpd.conf
Изоляция публикацийОтдельные пулы приложенийОдин процесс на все публикации
Сертификат HTTPSЧерез диспетчер IISЧерез mod_ssl и правку конфигурации
Аутентификация ОС (Windows)ВстроеннаяНужны дополнительные модули
Типичный выборОфис на Windows, доменLinux-сервер, облачная VPS

Рекомендация по ситуациям:

  • 🪟 Сервер на Windows в домене — IIS. Пулы приложений и доменная аутентификация есть из коробки, отлаживать проще.
  • 🐧 Сервер 1С на Linux — Apache. IIS там нет.
  • 🧪 Тестовая публикация на рабочем компьютере — подойдёт любой. Apache ставится быстрее, IIS включается через «Компоненты Windows».

Разрядность модуля должна совпадать с разрядностью процесса веб-сервера. Apache Lounge x64 загружает только 64-битный wsap24.dll. IIS на 64-битной Windows по умолчанию работает в 64-битном режиме. Для 32-битной платформы в пуле надо включить 32-битные приложения, об этом ниже.

Как опубликовать базу на веб-сервере

Подготовка

  1. Установите веб-сервер. Для IIS в «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)» и в разделе «Разработка приложений» отметьте «Расширения ISAPI» и «Фильтры ISAPI». Без них модуль 1С не загрузится.
  2. Установите платформу 1С той же версии, что на сервере 1С:Предприятия, с компонентом «Модули расширения веб-сервера». Для клиент-серверной базы номер версии платформы на веб-сервере должен совпадать с версией кластера до последней цифры.
  3. Создайте каталог для публикации, например C:\inetpub\wwwroot\buh. Базу туда не кладут: в каталоге будут только default.vrd и, для IIS, web.config.

Публикация из Конфигуратора

  1. Запустите Конфигуратор от имени администратора Windows. Без этого публикация упадёт с ошибкой записи в каталог или в настройки веб-сервера.
  2. Откройте Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации (оно станет частью адреса: http://сервер/buh), выберите веб-сервер и каталог.
  4. Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData. Лишнее не включайте.
  5. Для Apache укажите путь к httpd.conf, если Конфигуратор его не нашёл.
  6. Нажмите «Опубликовать». Для Apache после этого перезапустите службу.

Публикация из командной строки

На сервере без графического Конфигуратора или для скриптов используют утилиту webinst из каталога bin платформы:

cd "C:\Program Files\1cv8\8.3.24.1691\bin"

rem IIS, клиент-серверная база
webinst -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"

rem Apache 2.4, файловая база
webinst -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "File=""D:\Bases\Buh"";" -confpath "C:\Apache24\conf\httpd.conf"

Номер версии в пути подставьте свой. Полный список ключей выводит webinst -help.

Что появится в httpd.conf

Для Apache публикация дописывает в конец httpd.conf блок такого вида:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1691/bin/wsap24.dll"

# 1c publication
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 для модуля 1С должна быть одна на весь файл. После обновления платформы путь в ней надо поменять на новую версию — частая причина, почему публикация «отвалилась» после обновления сервера.

Файл 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="/buh"
       ib="Srvr=&quot;srv1c&quot;;Ref=&quot;buh&quot;;">
</point>

Атрибут ib — строка подключения к базе, base — имя публикации. Кавычки внутри атрибута записаны как &quot;. Правка default.vrd вступает в силу после перезапуска пула (IIS) или службы Apache.

Пулы приложений IIS: изоляция публикаций

Пул приложений — отдельный рабочий процесс w3wp.exe, в котором IIS выполняет приложение. Если опубликовать все базы в один пул, зависание или падение модуля 1С в одной публикации остановит остальные.

Как настроить:

  1. В «Диспетчере служб IIS» откройте «Пулы приложений» и создайте пул, например 1C_buh. Версия среды CLR — «Без управляемого кода»: модулю 1С .NET не нужен.
  2. Откройте сайт, найдите приложение buh и в его основных настройках выберите созданный пул.
  3. Если на сервере 32-битная платформа 1С, в «Дополнительных параметрах» пула установите «Разрешены 32-разрядные приложения» = True. Для 64-битной платформы оставьте False.
  4. В тех же параметрах проверьте «Удостоверение» пула. От этой учётной записи модуль 1С обращается к файлам.

Права учётной записи

  • 📁 Файловая база: учётной записи пула (или группе IIS_IUSRS) нужны права на изменение каталога базы. Иначе база не откроется, а в каталоге не создастся файл блокировки.
  • 📦 Каталог платформы C:\Program Files\1cv8\<версия>\bin — права на чтение и выполнение.
  • 🗂️ Каталог публикации — права на чтение.

Для Apache на Windows права нужны учётной записи, от которой запущена служба. По умолчанию это «Локальная система», и проблем с доступом к локальным папкам обычно нет. Но к файловой базе на сетевой шаре такая служба не достучится: её запускают от доменной учётной записи с правами на шару.

Перезапуск пула, команда iisreset или рестарт службы Apache обрывают сеансы всех пользователей этой публикации. Делайте это вне рабочего времени или предупредите людей заранее.

Переработка пула

По умолчанию IIS перезапускает пул раз в 1740 минут (29 часов), то есть в случайное рабочее время. Пользователи веб-клиента в этот момент теряют сеанс. В «Дополнительных параметрах» пула в разделе «Переработка» замените регулярный интервал на определённое время, например на 03:00.

Ошибки подключения и как их диагностировать

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

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

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

  • 🧾 Журналы IIS: C:\inetpub\logs\LogFiles. В строке запроса видны код ответа и подкод, например 500 0.
  • 🧾 Журнал ошибок Apache: logs\error.log в каталоге установки.
  • 🧾 «Журнал событий Windows» → «Приложение»: туда пишут сбои w3wp.exe и модуля 1С.
  • 🔍 Технологический журнал 1С через logcfg.xml — когда веб-сервер отвечает, а ошибка возникает внутри платформы.

Безопасность публикации и HTTPS

Публикация в интернет без защиты — это открытая форма входа в базу с бухгалтерией. Минимальный набор мер:

  1. Только HTTPS. По HTTP логин и пароль пользователя 1С уходят открытым текстом. Наружу пробрасывайте порт 443, порт 80 используйте только для переадресации на HTTPS.
  2. Пароли у всех пользователей 1С. Пользователь без пароля в опубликованной базе — дыра. Отключите вход пользователям, которым доступ снаружи не нужен.
  3. Не храните логин и пароль в default.vrd. Строку подключения можно дополнить параметрами Usr и Pwd, но тогда любой, кто знает адрес, попадает в базу под этим пользователем.
  4. Публикуйте только нужное. Не нужен OData — не включайте. Для интеграции заведите отдельного пользователя с минимальными правами.
  5. Порты кластера не открывайте наружу. Снаружи доступен только веб-сервер, а 1540, 1541 и диапазон рабочих процессов остаются во внутренней сети.

Сертификат в IIS

  1. В «Диспетчере служб IIS» выберите сервер → «Сертификаты сервера» и импортируйте сертификат в формате .pfx.
  2. Откройте сайт → «Привязки» → «Добавить»: тип https, порт 443, имя узла — ваш домен, выберите сертификат.
  3. Для бесплатного сертификата Let’s Encrypt на Windows используют клиент win-acme: он выпускает сертификат, сам добавляет привязку и продлевает его.

Сертификат в Apache

Включите модуль SSL и опишите виртуальный хост:

LoadModule ssl_module modules/mod_ssl.so
Listen 443

<VirtualHost *:443>
    ServerName 1c.company.ru
    SSLEngine on
    SSLCertificateFile    "C:/Apache24/conf/ssl/cert.pem"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/privkey.pem"
</VirtualHost>

На Linux сертификат Let’s Encrypt проще всего получить через certbot с плагином для Apache: он сам пропишет пути и настроит продление.

Тонкий клиент проверяет сертификат сервера. Самоподписанный сертификат вызовет предупреждение у каждого пользователя. Для публикации наружу берите сертификат от доверенного центра, бесплатный Let’s Encrypt подходит.

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

Можно ли опубликовать файловую базу на веб-сервере?
Да. Модуль 1С откроет её сам, в процессе веб-сервера. Учётной записи пула IIS или службы Apache нужны права на изменение каталога базы.
Нужен ли сервер 1С:Предприятия, чтобы работать через веб-клиент?
Нет. Веб-клиент работает и с файловой базой. Но при 10–15 одновременных пользователях и больше файловая база через веб-сервер начинает тормозить, и переход на клиент-серверный вариант оправдан.
Обязательно ставить веб-сервер на тот же компьютер, что и сервер 1С?
Нет. Веб-сервер можно вынести на отдельную машину, в том числе в демилитаризованную зону. Ему нужен доступ к кластеру по портам агента, менеджера и рабочих процессов.
Можно ли на одном IIS опубликовать несколько баз?
Да, каждую под своим именем. Лучше давать каждой публикации отдельный пул приложений, чтобы сбой одной базы не останавливал остальные.
Что делать с публикацией после обновления платформы?
Переопубликуйте базу из Конфигуратора новой версии. Для Apache проверьте, что в httpd.conf осталась одна строка LoadModule для 1С с путём к новой версии.