1С:Предприятие на IIS и Apache: что происходит между браузером и базой
Содержание
1С работает через веб-сервер так: браузер или тонкий клиент отправляет HTTP-запросы на IIS или Apache, а модуль расширения веб-сервера 1С (wsisapi.dll для IIS, wsap24.dll для Apache 2.4) передаёт их платформе. Дальше запрос обрабатывает либо сам веб-сервер (файловая база), либо кластер серверов 1С (клиент-серверная). Пользователю не нужен VPN или RDP — достаточно адреса вида https://server/buh.
Выбор веб-сервера простой. IIS берут, когда всё на Windows и нужна доменная аутентификация. Apache — когда сервер на Linux или нужен один конфиг под несколько версий платформы. Настройка и архитектура у обоих одинаковы по сути, отличаются только способом подключения модуля.
Как устроена работа 1С через веб-сервер
В цепочке четыре звена. Важно понимать, где какое лежит, иначе ошибки публикации ищут не там.
- 🌐 Клиент — веб-клиент (браузер) или тонкий клиент 1С, подключённый по HTTP.
- 🖥️ Веб-сервер — IIS или Apache. Сам он 1С не понимает, только принимает запросы.
- 🧩 Модуль расширения 1С — библиотека из каталога
binустановленной платформы. Она загружает серверную часть 1С внутрь процесса веб-сервера. - 🗄️ База — файл
1Cv8.1CDили информационная база в кластере 1С.
Разница между вариантами базы принципиальная:
| Вариант базы | Кто выполняет серверный код | Где ищется лицензия | Сколько пользователей комфортно |
|---|---|---|---|
| Файловая | процесс веб-сервера | на компьютере веб-сервера | до 5–10 одновременно |
| Клиент-серверная | рабочие процессы кластера 1С | на сервере 1С | десятки и сотни |
В клиент-серверном варианте веб-сервер для кластера — обычный клиент. Он обращается к агенту сервера (порт 1540), затем к менеджеру кластера (1541) и рабочим процессам (диапазон портов задан в свойствах рабочего сервера, по умолчанию 1560–1591). Если между веб-сервером и сервером 1С стоит межсетевой экран, открыть нужно все эти порты, а не только 1540.
Связку между URL и базой описывает файл default.vrd в каталоге публикации. В нём строка подключения к базе и набор опубликованных сервисов. Веб-сервер читает его при каждом обращении к публикации.
Версия модуля и версия платформы на сервере 1С должны совпадать до последней цифры. Обновили сервер 1С с 8.3.24 до 8.3.25 — обновите и платформу на веб-сервере, и путь к модулю.
Выбор веб-сервера и подготовка к публикации
| Критерий | IIS | Apache 2.4 |
|---|---|---|
| ОС | только Windows | Windows и Linux |
| Подключение модуля | обработчик в web.config | директивы в httpd.conf |
| Доменная (Windows) аутентификация | встроенная | нужны отдельные модули |
| Несколько версий платформы на одном сервере | неудобно, через разные пулы | просто, путь к модулю в каждой публикации |
| Поддержка в Конфигураторе | да | да (Apache 2.2 и 2.4) |
Что установить для IIS
- В Windows Server откройте
Диспетчер серверов → Добавить роли и компонентыи выберите роль Веб-сервер (IIS). - В службах роли отметьте
Разработка приложений → Расширения ISAPIиФильтры ISAPI, а также консоль управления IIS. - Установите платформу 1С с компонентом Модули расширения веб-сервера. Без него в
binне будетwsisapi.dll. - Разрядность платформы должна совпадать с режимом пула приложений. Для 32-битной платформы в дополнительных параметрах пула включите «Разрешены 32-разрядные приложения», для 64-битной — выключите.
Что установить для Apache
- Поставьте Apache 2.4 той же разрядности, что и платформа 1С. На Windows обычно берут сборку Apache Lounge, на Linux — пакет
apache2илиhttpd. - Установите платформу с модулями веб-сервера. На Linux модуль называется
wsap24.soи лежит в/opt/1cv8/x86_64/<версия>/. - Запустите Apache как службу и проверьте, что стартовая страница открывается.
Публикация информационной базы на веб-сервере
Опубликовать базу можно двумя способами: из Конфигуратора или утилитой webinst. Результат одинаков — каталог с default.vrd и запись в настройках веб-сервера.
Через Конфигуратор
- Запустите Конфигуратор от имени администратора Windows. Без этого публикация не сможет записать
httpd.confили настройки IIS. - Откройте
Администрирование → Публикация на веб-сервере. - Укажите имя публикации (оно станет частью адреса, латиницей:
buh), тип веб-сервера и каталог, напримерC:\inetpub\wwwroot\buh. - Отметьте «Публиковать тонкий клиент и веб-клиент». Веб-сервисы, HTTP-сервисы и OData включайте, только если они действительно нужны.
- Нажмите «Опубликовать». Для Apache после этого перезапустите службу.
Через webinst
Утилита лежит в каталоге bin платформы. Она удобна для скриптов и для Linux, где Конфигуратор на сервере обычно не запускают.
cd "C:\Program Files\1cv8\8.3.24.1342\bin"
webinst -publish -apache24 -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"
Для IIS вместо -apache24 указывают -iis, параметр -confpath тогда не нужен. Для файловой базы строка подключения выглядит как File=C:\Bases\buh;.
Что появляется в httpd.conf
Конфигуратор и webinst добавляют примерно такой блок. Его полезно знать, чтобы править руками после обновления платформы:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1342/bin/wsap24.dll"
Alias "/buh" "C:/inetpub/wwwroot/buh/"
<Directory "C:/inetpub/wwwroot/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/buh/default.vrd"
</Directory>
Строка LoadModule в конфиге должна быть одна. Две публикации с разными путями к модулю в одном Apache не уживутся — служба не стартует.
Как подключиться к опубликованной базе
- 🌍 Веб-клиент: откройте в браузере
http://имя-сервера/buh. Поддерживаются актуальные Chrome, Edge, Firefox, Яндекс Браузер, Safari. - 💻 Тонкий клиент: в окне запуска нажмите «Добавить» → «Добавление в список существующей информационной базы» → тип расположения «На веб-сервере» и тот же адрес.
Тонкий клиент через веб-сервер работает быстрее веб-клиента и умеет всё, что умеет в локальной сети, включая печать и работу с файлами. Веб-клиент удобен там, где ставить ничего нельзя.
Безопасность публикации и HTTPS
Публикация в интернет без защиты — прямой доступ к бухгалтерии для любого, кто подберёт пароль. Минимальный набор мер:
- 🔒 HTTPS обязателен. В IIS добавьте привязку
httpsна порт 443 с сертификатом в настройках сайта. В Apache включитеmod_sslи пропишитеSSLCertificateFileиSSLCertificateKeyFileв виртуальном хосте. - 🔑 У всех пользователей 1С есть пароли, пользователь без пароля через веб-доступ — открытая дверь.
- 🚫 Не храните логин и пароль в строке подключения. Параметры
UsrиPwdв-connstrили вdefault.vrdпускают в базу любого, кто знает адрес. - 🧱 Публикуйте только нужное. Отключённые OData и веб-сервисы не нужно защищать.
- 🌐 Ограничьте доступ по IP, если в базу ходят из известных офисов.
Сертификат для тонкого клиента должен быть доверенным. С самоподписанным браузер покажет предупреждение, а тонкий клиент может отказаться подключаться. Проще всего выпустить бесплатный сертификат Let’s Encrypt на доменное имя.
Ещё один удобный вариант — поставить перед IIS или Apache обратный прокси nginx. Он берёт на себя TLS, сжатие и ограничение доступа, а сам веб-сервер с 1С не выставляется наружу.
Права на каталоги
Процесс веб-сервера работает под служебной учётной записью. Ей нужны права:
| Каталог | Учётная запись | Права |
|---|---|---|
Каталог публикации (...\wwwroot\buh) | IIS_IUSRS / служба Apache | чтение |
bin платформы | IIS_IUSRS / служба Apache | чтение и выполнение |
| Каталог файловой базы | IUSR и IIS_IUSRS / служба Apache | изменение |
Для клиент-серверной базы права на каталог базы не нужны — к данным ходит кластер, а не веб-сервер.
Ошибки при работе 1С через веб-сервер и их диагностика
Большинство ошибок появляются сразу после публикации или после обновления платформы. Начинайте с журнала событий Windows (раздел «Приложение») или error.log Apache — там видна настоящая причина, а не общий текст в браузере.
Перезапуск службы Apache или пула приложений IIS обрывает все сеансы, открытые через публикацию. Несохранённые документы у пользователей пропадут. Делайте это вне рабочего времени или предупредите людей заранее.
Технологический журнал на веб-сервере
Если в логах веб-сервера пусто, включите технологический журнал 1С на машине веб-сервера. Файл logcfg.xml кладут в каталог conf платформы:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1C_log" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
</log>
</config>
Журнал будет собирать исключения платформы. Каталог C:\1C_log должен быть доступен на запись учётной записи веб-сервера. После диагностики удалите logcfg.xml, иначе журнал продолжит расти.
Производительность и масштабирование веб-доступа
Веб-сервер сам по себе редко бывает узким местом. Тормозит обычно база или канал. Но несколько настроек заметно влияют на скорость.
- ⚡ Файловая база через веб-сервер держит нагрузку хуже, чем клиент-серверная. Если одновременно работает больше 5–10 человек и появляются блокировки, переходите на сервер 1С, а веб-сервер оставьте как точку входа.
- 🔁 Пул приложений IIS по умолчанию перезапускается каждые 29 часов. В момент перезапуска сеансы рвутся. Задайте перезапуск по расписанию ночью.
- 🗜️ Сжатие ответов (gzip) включите на веб-сервере или на прокси. Для удалённых офисов с медленным каналом это заметно.
- 🌍 Тонкий клиент вместо веб-клиента снижает нагрузку на браузер пользователя и обычно работает отзывчивее.
Несколько веб-серверов
Когда пользователей сотни, ставят два-три веб-сервера с одинаковыми публикациями и балансировщик перед ними (nginx, HAProxy или аппаратный). Правила простые:
- Публикации на всех узлах одинаковые, с одной строкой подключения к кластеру.
- Платформа на всех веб-серверах той же версии, что и кластер.
- На балансировщике включите закрепление клиента за узлом (sticky-сессии), чтобы запросы одного пользователя шли на один веб-сервер.
- Нагрузку на сам кластер 1С распределяют средствами кластера — через рабочие серверы и требования назначения функциональности, а не балансировщиком веб-уровня.