Публикация базы 1С через IIS и Apache: роль веб-сервера, настройка и защита
Содержание
Веб-сервер для 1С нужен, когда к базе подключаются через браузер, тонкий клиент по HTTP, мобильное приложение или внешние системы по HTTP-сервисам, веб-сервисам и OData. Если все работают в одной локальной сети через обычный тонкий клиент, IIS и Apache не требуются: клиент подключается к файловой базе напрямую или к кластеру серверов 1С по портам 1540–1541.
Частое заблуждение — считать веб-сервер «ускорителем» или заменой сервера 1С:Предприятия. Он ничего не вычисляет и данные не хранит. Это посредник: принимает HTTP-запросы, передаёт их модулю расширения 1С, а тот уже работает с базой. Настройка сводится к трём вещам: установить модуль расширения, опубликовать базу и дать права нужной учётной записи.
Зачем веб-сервер в архитектуре 1С
Схема с веб-сервером выглядит так:
- Пользователь открывает адрес вида
https://1c.company.ru/buhв браузере или в тонком клиенте. - IIS или Apache видит, что путь
/buhобслуживает модуль 1С, и отдаёт запрос ему. - Модуль расширения читает файл
default.vrdпубликации и узнаёт, где лежит база: путь к файловой базе или строкуSrvr=...;Ref=.... - Для файловой базы модуль открывает её сам, в процессе веб-сервера. Для клиент-серверной — обращается к кластеру как обычный клиент.
Отсюда практичный вывод: веб-сервер — это «окно» в базу снаружи. Сама база может стоять на другом компьютере.
Когда без веб-сервера не обойтись
- 🌐 Веб-клиент — работа из браузера без установки платформы.
- 🖥️ Тонкий клиент через интернет — подключение по 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). Они ставятся компонентом «Модули расширения веб-сервера» в установщике платформы.
| Критерий | IIS | Apache 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-битные приложения, об этом ниже.
Как опубликовать базу на веб-сервере
Подготовка
- Установите веб-сервер. Для IIS в «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)» и в разделе «Разработка приложений» отметьте «Расширения ISAPI» и «Фильтры ISAPI». Без них модуль 1С не загрузится.
- Установите платформу 1С той же версии, что на сервере 1С:Предприятия, с компонентом «Модули расширения веб-сервера». Для клиент-серверной базы номер версии платформы на веб-сервере должен совпадать с версией кластера до последней цифры.
- Создайте каталог для публикации, например
C:\inetpub\wwwroot\buh. Базу туда не кладут: в каталоге будут толькоdefault.vrdи, для IIS,web.config.
Публикация из Конфигуратора
- Запустите Конфигуратор от имени администратора Windows. Без этого публикация упадёт с ошибкой записи в каталог или в настройки веб-сервера.
- Откройте
Администрирование → Публикация на веб-сервере. - Укажите имя публикации (оно станет частью адреса:
http://сервер/buh), выберите веб-сервер и каталог. - Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData. Лишнее не включайте.
- Для Apache укажите путь к
httpd.conf, если Конфигуратор его не нашёл. - Нажмите «Опубликовать». Для 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="srv1c";Ref="buh";">
</point>
Атрибут ib — строка подключения к базе, base — имя публикации. Кавычки внутри атрибута записаны как ". Правка default.vrd вступает в силу после перезапуска пула (IIS) или службы Apache.
Пулы приложений IIS: изоляция публикаций
Пул приложений — отдельный рабочий процесс w3wp.exe, в котором IIS выполняет приложение. Если опубликовать все базы в один пул, зависание или падение модуля 1С в одной публикации остановит остальные.
Как настроить:
- В «Диспетчере служб IIS» откройте «Пулы приложений» и создайте пул, например
1C_buh. Версия среды CLR — «Без управляемого кода»: модулю 1С .NET не нужен. - Откройте сайт, найдите приложение
buhи в его основных настройках выберите созданный пул. - Если на сервере 32-битная платформа 1С, в «Дополнительных параметрах» пула установите «Разрешены 32-разрядные приложения» =
True. Для 64-битной платформы оставьтеFalse. - В тех же параметрах проверьте «Удостоверение» пула. От этой учётной записи модуль 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
Публикация в интернет без защиты — это открытая форма входа в базу с бухгалтерией. Минимальный набор мер:
- Только HTTPS. По HTTP логин и пароль пользователя 1С уходят открытым текстом. Наружу пробрасывайте порт 443, порт 80 используйте только для переадресации на HTTPS.
- Пароли у всех пользователей 1С. Пользователь без пароля в опубликованной базе — дыра. Отключите вход пользователям, которым доступ снаружи не нужен.
- Не храните логин и пароль в
default.vrd. Строку подключения можно дополнить параметрамиUsrиPwd, но тогда любой, кто знает адрес, попадает в базу под этим пользователем. - Публикуйте только нужное. Не нужен OData — не включайте. Для интеграции заведите отдельного пользователя с минимальными правами.
- Порты кластера не открывайте наружу. Снаружи доступен только веб-сервер, а 1540, 1541 и диапазон рабочих процессов остаются во внутренней сети.
Сертификат в IIS
- В «Диспетчере служб IIS» выберите сервер → «Сертификаты сервера» и импортируйте сертификат в формате
.pfx. - Откройте сайт → «Привязки» → «Добавить»: тип
https, порт443, имя узла — ваш домен, выберите сертификат. - Для бесплатного сертификата 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С:Предприятия, чтобы работать через веб-клиент?
Обязательно ставить веб-сервер на тот же компьютер, что и сервер 1С?
Можно ли на одном IIS опубликовать несколько баз?
Что делать с публикацией после обновления платформы?
httpd.conf осталась одна строка LoadModule для 1С с путём к новой версии.