Публикация базы 1С на веб-сервере: от модуля расширения до HTTPS
Содержание
Чтобы настроить веб-доступ к 1С, нужны три вещи: веб-сервер (IIS на Windows или Apache 2.4 на Windows и Linux), модуль расширения веб-сервера из дистрибутива платформы и публикация базы. Публикуют из Конфигуратора, запущенного от имени администратора: Администрирование → Публикация на веб-сервере. После этого база открывается в браузере по адресу вида http://server/base и в тонком клиенте как база «На веб-сервере».
IIS выбирают, когда инфраструктура уже на Windows Server и админ привык к его консоли. Apache берут для Linux-серверов и когда нужна одна схема на любой ОС. По возможностям для 1С они равны: веб-клиент, тонкий клиент через HTTP, веб-сервисы, HTTP-сервисы и OData работают на обоих.
Какой веб-сервер выбрать и что подготовить
Сравнение вариантов, которые поддерживает платформа 8.3:
| Веб-сервер | ОС | Модуль 1С | Когда выбирать |
|---|---|---|---|
| IIS 10 | Windows Server 2016 и новее, Windows 10/11 | wsisapi.dll | Windows-инфраструктура, домен, нужен простой GUI |
| Apache 2.4 | Windows | wsap24.dll | Нужна одинаковая конфигурация с Linux-серверами |
| Apache 2.4 | Linux (Debian, Ubuntu, РЕД ОС, Astra) | wsap24.so | Сервер 1С на Linux, импортозамещение |
Перед установкой проверьте четыре вещи:
- 🧩 Разрядность. Модуль 1С должен совпадать по разрядности с веб-сервером. IIS на 64-битной Windows работает с 64-битной платформой. Apache для Windows бывает 32- и 64-битным — ставьте платформу той же разрядности.
- 🔢 Версия платформы. На веб-сервере ставится та же версия платформы, что на сервере 1С (номер в номер, например 8.3.25.1445 на обоих). Иначе соединение с кластером не установится.
- 🔌 Порты. Если база клиент-серверная, веб-сервер ходит к кластеру 1С как обычный клиент: агент на 1540, менеджер кластера на 1541 и диапазон рабочих процессов (по умолчанию 1560–1591). Эти порты должны быть открыты от веб-сервера к серверу 1С.
- 🔑 Лицензии. Веб-клиент занимает клиентскую лицензию так же, как тонкий клиент. В клиент-серверном варианте её выдаёт кластер. В файловом — лицензия должна быть доступна модулю веб-сервера на этом компьютере.
Подготовка IIS
Откройте Диспетчер серверов → Управление → Добавить роли и компоненты и включите роль «Веб-сервер (IIS)». В составе роли отметьте:
- «Разработка приложений» → «Расширения ISAPI» и «Фильтры ISAPI».
- «Средства управления» → «Консоль управления IIS».
- Стандартные компоненты HTTP («Статическое содержимое», «Документ по умолчанию») обычно включены сами.
Без «Расширений ISAPI» публикация пройдёт, но браузер получит ошибку 404.
Подготовка Apache
На Linux Apache ставят из репозитория дистрибутива: apt install apache2 для Debian и Ubuntu. На Windows используют сборку Apache 2.4 под Windows, распаковывают её, например, в C:\Apache24 и регистрируют службой командой httpd.exe -k install из папки bin.
Старые сборки Apache 2.2 платформа 8.3 тоже поддерживает модулем wsap22, но новые серверы на 2.2 не поднимают: эта ветка давно не получает исправлений.
Модули расширения веб-сервера: установка
Модуль ставится вместе с платформой. В программе установки 1С:Предприятия выберите компонент «Модули расширения веб-сервера». Остальные компоненты на веб-сервере не обязательны, но удобно поставить и «1С:Предприятие» — без Конфигуратора публикацию придётся делать утилитой webinst.
После установки файлы модулей лежат в папке bin платформы, например:
C:\Program Files\1cv8\8.3.25.1445\bin\wsisapi.dll
C:\Program Files\1cv8\8.3.25.1445\bin\wsap24.dll
/opt/1cv8/x86_64/8.3.25.1445/wsap24.so
На Linux модули входят в пакет сервера (в новых версиях единый дистрибутив, компонент выбирается при установке). Проверить, что модуль на месте, просто: ls /opt/1cv8/x86_64/*/wsap24.so.
Путь к модулю содержит номер версии платформы. Это главный подводный камень, к нему вернёмся в разделе об ошибках.
Публикация базы на веб-сервере
Есть два способа: мастер в Конфигураторе и утилита командной строки webinst. Мастер удобен разово, утилита — для скриптов и серверов без графической оболочки.
Через Конфигуратор
- Запустите 1С от имени администратора (правый клик по ярлыку). Без этого мастер не сможет записать файлы в
C:\inetpubи изменитьhttpd.conf. - Откройте базу в режиме Конфигуратора.
- Выберите
Администрирование → Публикация на веб-сервере. - Задайте имя публикации латиницей, например
buh. Оно станет частью адреса:http://server/buh. - Выберите веб-сервер из списка: IIS или Apache 2.4. Для Apache укажите путь к
httpd.conf. - Укажите каталог публикации, например
C:\inetpub\wwwroot\buhилиC:\Apache24\htdocs\buh. - Отметьте, что публиковать: тонкий клиент и веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData.
- Нажмите «Опубликовать». Для Apache мастер предложит перезапустить службу — согласитесь.
В каталоге появится файл default.vrd. В нём записана строка соединения с базой и список опубликованных сервисов.
Через webinst
Утилита лежит в той же папке bin. Пример для IIS и клиент-серверной базы:
"C:\Program Files\1cv8\8.3.25.1445\bin\webinst.exe" -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"
Пример для Apache на Linux:
sudo /opt/1cv8/x86_64/8.3.25.1445/webinst -publish -apache24 \
-wsdir buh -dir /var/www/buh \
-connstr "Srvr=srv1c;Ref=buh;" \
-confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2
Для файловой базы строка соединения выглядит так: File="D:\Bases\Buh";. Полный список ключей выводит webinst -help.
Что мастер записывает в конфигурацию Apache
Полезно знать, что именно добавляется в httpd.conf, чтобы поправить руками:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1445/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 пишется один раз на весь сервер. Блоки Alias и Directory — на каждую публикацию.
Подключение тонкого клиента
В окне запуска 1С нажмите «Добавить», выберите «Добавление в список существующей информационной базы» и тип расположения «На веб-сервере». Адрес — http://server/buh. Тонкий клиент будет ходить к базе по HTTP, без прямого доступа к серверу 1С.
Права доступа, аутентификация и профили безопасности
Здесь две отдельные задачи: дать веб-серверу доступ к файлам и ограничить, кто и что может делать через публикацию.
Права на файлы
- 📁 IIS. Учётная запись пула приложений (по умолчанию
IIS AppPool\DefaultAppPool) и группаIIS_IUSRSдолжны читать каталог публикации и папкуbinплатформы. - 📁 Файловая база через IIS. Той же учётной записи нужны права на изменение каталога базы. Иначе база откроется с ошибкой доступа к файлу
1Cv8.1CD. - 📁 Apache на Windows. Права нужны пользователю, от которого запущена служба Apache. По умолчанию это «Локальная система»; для файловой базы на сетевом ресурсе запускайте службу от доменной учётной записи с доступом к папке.
- 📁 Apache на Linux. Пользователь
www-data(Debian, Ubuntu) илиapacheдолжен читать каталог публикации.
Аутентификация пользователей
Пользователи входят так же, как в обычном клиенте: по логину и паролю 1С:Предприятия или через аутентификацию операционной системы. Пользователей заводят в базе: Администрирование → Настройки пользователей и прав → Пользователи (БП 3.0, ЗУП 3.1, УТ 11).
Если в базе нет ни одного пользователя, публикация пустит любого, кто знает адрес. Перед открытием доступа из интернета заведите пользователей и поставьте сложный пароль администратору.
В default.vrd можно зашить логин и пароль в строку соединения (Usr=...;Pwd=...;). Так делают только для служебной публикации веб-сервиса, к которой ходит другая программа. Для людей это дыра: любой посетитель войдёт под этим пользователем.
Профили безопасности кластера
Профиль безопасности ограничивает, что код конфигурации и расширений может делать на сервере: доступ к файловой системе, запуск внешних компонент и приложений, интернет-ресурсы. Это защита на случай, если через веб-доступ в базу загрузят вредную внешнюю обработку .
Профиль создают в консоли администрирования серверов 1С: в дереве кластера есть узел «Профили безопасности». Затем открывают свойства информационной базы и выбирают профиль в поле «Профиль безопасности». В типовых конфигурациях есть флаг использования профилей безопасности в разделе Администрирование, после его включения программа сама запрашивает нужные разрешения.
Публикуйте только нужное
Чем меньше сервисов открыто, тем меньше поверхность атаки. Если OData и веб-сервисы никто не использует, снимите их флажки при публикации. Для внешних пользователей удобно сделать отдельную публикацию только с веб-клиентом, а служебную публикацию с HTTP-сервисами держать во внутренней сети.
Производительность и масштабирование веб-доступа
Сам веб-сервер нагрузку почти не создаёт: основную работу делает сервер 1С. Но несколько настроек заметно влияют на отклик.
Настройки пула приложений IIS
Откройте Диспетчер IIS → Пулы приложений → DefaultAppPool → Дополнительные параметры:
| Параметр | Значение по умолчанию | Что поставить для 1С |
|---|---|---|
| Включить 32-разрядные приложения | False | False для 64-битной платформы, True для 32-битной |
| Тайм-аут простоя (мин.) | 20 | 0 — пул не выгружается, первый вход без задержки |
| Регулярный интервал перезапуска (мин.) | 1740 | 0 и перезапуск по расписанию в ночное время |
Перезапуск пула обрывает все сеансы веб-клиента. Пользователи увидят ошибку и потеряют несохранённые данные, поэтому дневной перезапуск каждые 29 часов лучше отключить и перенести на ночь.
Для каждой крупной базы удобно сделать отдельный пул. Тогда сбой или перезапуск одной публикации не задевает остальные.
Что ещё ускоряет работу
- 🚀 Расстояние до сервера 1С. Веб-сервер ставят в той же сети, что и кластер. Задержка между ними умножается на каждый серверный вызов.
- 🚀 Файловая база. Через веб она работает заметно лучше, чем по сетевой папке: файлы читает один процесс на веб-сервере. Но при 10–15 одновременных пользователях пора переходить на клиент-серверный вариант.
- 🚀 Сжатие. Включите сжатие статического содержимого (в IIS — компонент «Сжатие статического содержимого», в Apache —
mod_deflate). Это ускоряет первую загрузку веб-клиента на медленных каналах.
Масштабирование
При росте числа пользователей добавляют рабочие серверы в кластер 1С — веб-сервер при этом не меняется. Если узким местом стал сам веб-сервер или нужна отказоустойчивость, ставят два-три веб-сервера с одинаковыми публикациями и балансировщик перед ними. Балансировщик должен держать «липкие» сеансы: один пользователь всё время попадает на один веб-сервер.
HTTPS для веб-доступа к 1С
Если база открыта в интернет, HTTP недопустим: логин и пароль 1С уходят по сети в открытом виде. Нужен сертификат и защищённое соединение.
IIS
- Получите сертификат. Для публичного домена подходит бесплатный Let’s Encrypt через клиент win-acme, для внутренней сети — сертификат корпоративного центра сертификации.
- В
Диспетчере IISвыберите сайт → «Привязки» → «Добавить», типhttps, порт 443, выберите сертификат. - Чтобы не пускать по HTTP, в разделе «Параметры SSL» сайта отметьте «Требовать SSL».
Apache
Включите модуль SSL и опишите виртуальный хост на 443 порту. На Debian и Ubuntu это a2enmod ssl, а сертификат Let’s Encrypt удобно получить через certbot --apache.
<VirtualHost *:443>
ServerName 1c.example.ru
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/1c.example.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/1c.example.ru/privkey.pem
</VirtualHost>
После этого в списке баз адрес меняют на https://1c.example.ru/buh.
Самоподписанный сертификат подходит только для проверки. Тонкий клиент и браузер будут ругаться на него, а пользователи привыкнут нажимать «Продолжить» — это хуже, чем отсутствие сертификата.
Дополнительно ограничьте доступ на уровне сети: открывайте наружу только 443 порт, а порты кластера 1540–1591 держите закрытыми для интернета.
Ошибки веб-доступа и как их устранить
Большинство сбоев после публикации сводится к четырём причинам: разрядность, права, версия платформы и не включённый компонент веб-сервера.
wsisapi.dll не разрешено. В Диспетчере IIS откройте на уровне сервера «Ограничения ISAPI и CGI» и разрешите модуль 1С. Если пункта нет — не установлен компонент «Расширения ISAPI».bin платформы или файлы файловой базы. Выдайте права и перезапустите пул или службу.wsap24 другой разрядности, чем Apache, либо путь в строке LoadModule указывает на несуществующую папку. Проверьте конфигурацию командой httpd -t на Windows или apachectl configtest на Linux.LoadModule и обработчик IIS ссылаются на её папку. Переопубликуйте базу из новой версии Конфигуратора или поправьте путь вручную.Ошибку с обновлением платформы ловят чаще всего. Хорошая практика — после каждого обновления сервера 1С сразу ставить ту же сборку на веб-сервер и переопубликовывать базы командой webinst из скрипта. Старую версию платформы удаляйте только после этого.
Перезапуск службы Apache, пула IIS или команда iisreset обрывают сеансы всех пользователей веб-доступа. Делайте это вне рабочего времени или предупредите людей заранее.
Частые вопросы
Можно ли опубликовать на одном веб-сервере несколько баз?
/buh, /zup, /ut. Строка LoadModule в Apache при этом одна на все публикации.Нужен ли статический IP для доступа из интернета?
Как пустить к публикации только определённые IP-адреса?
Directory строку Require all granted на Require ip 192.168.1.0/24 с нужной подсетью. В IIS для этого есть компонент роли «Ограничения IP-адресов и доменов».