Как вынести веб-доступ к базе 1С на отдельную машину с IIS или Apache
Содержание
Чтобы опубликовать базу 1С на внешнем веб-сервере, поставьте на эту машину платформу 1С с компонентом «Модули расширения веб-сервера» той же версии, что и сервер 1С, и выполните публикацию утилитой webinst или из Конфигуратора, запущенного на самом веб-сервере. В строке соединения укажите адрес кластера (Srvr=srv1c;Ref=buh;) или сетевой путь к файловой базе. Дальше остаются права, порты и HTTPS.
Типичная боль: на сервере 1С всё работает, а веб-клиент с отдельной машины выдаёт ошибку 500 или «нет доступа к каталогу». Причина почти всегда в одном из трёх мест: несовпадение версий, права пользователя пула приложений или закрытые порты между веб-сервером и кластером. Ниже каждое место разобрано по шагам.
1. Что подготовить на веб-сервере до публикации
Схема с отдельной машиной выглядит так: пользователь открывает браузер → веб-сервер (IIS или Apache) с модулем 1С → сервер 1С:Предприятия или общая папка с файловой базой. Веб-сервер сам данных не хранит, он только передаёт запросы.
Что установить
- 🖥️ ОС: Windows Server 2016 и новее или Linux. Для внешнего доступа удобнее отдельная виртуальная машина в DMZ.
- 🌐 Веб-сервер: роль IIS или Apache 2.4 (для Windows — сборка x64, если модуль 1С 64-разрядный).
- 📦 Платформа 1С: из дистрибутива сервера или клиента выберите компоненты «Модули расширения веб-сервера» и «Администрирование сервера 1С:Предприятия». Тонкий клиент ставить не обязательно.
- 🔢 Версия: номер платформы на веб-сервере должен совпадать с номером на сервере 1С до последней цифры (например, 8.3.25.1374 и там, и там). Иначе подключение к кластеру упадёт с ошибкой о несоответствии версий.
Роль IIS: какие службы ролей отметить
В диспетчере серверов добавьте роль «Веб-сервер (IIS)» и в службах ролей раскройте «Разработка приложений». Там нужны:
- «Расширения ISAPI».
- «Фильтры ISAPI».
- Желательно «Сжатие динамического содержимого» в группе «Производительность» — пригодится позже.
Без расширений ISAPI модуль wsisapi.dll не загрузится, и любая публикация будет отдавать ошибку 404 или 500.
2. Публикация базы на внешнем веб-сервере: Конфигуратор или webinst
Публикация из Конфигуратора работает только с веб-сервером, установленным на той же машине. Если IIS стоит отдельно, есть два пути: запустить Конфигуратор прямо на веб-сервере или выполнить публикацию из командной строки.
| Способ | Когда подходит | Что учесть |
|---|---|---|
| Конфигуратор на веб-сервере | Разовая публикация, нужен визуальный выбор опций | Конфигуратор запускать от имени администратора; на машине нужен толстый клиент и лицензия на запуск |
Утилита webinst | Несколько баз, скрипты, Linux, нет толстого клиента | Строку соединения и пути пишете вручную |
Вариант А. Через Конфигуратор
- Запустите 1С на веб-сервере от имени администратора и откройте базу в Конфигураторе.
- Меню
Администрирование → Публикация на веб-сервере…. - Задайте имя публикации латиницей, например
buh. Оно станет частью адреса:http://web01/buh. - Выберите веб-сервер (Internet Information Services или Apache 2.4) и каталог, например
C:\inetpub\wwwroot\buh. - Отметьте только нужное: доступ для тонкого и веб-клиента, при необходимости HTTP-сервисы, веб-сервисы и OData.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Вариант Б. Через webinst
Утилита лежит в каталоге bin установленной платформы. Публикация серверной базы в IIS:
cd "C:\Program Files\1cv8\8.3.25.1374\bin"
webinst -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"
Файловая база в общей папке на другой машине:
webinst -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "File=\\fs01\bases\buh;"
Удалить публикацию: webinst -delete -iis -wsdir buh. Полный список ключей выводит webinst -?.
В каталоге публикации появится файл 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";"/>
Если базу перенесли на другой сервер 1С, не переопубликовывайте всё заново: поменяйте значение Srvr в атрибуте ib и перезапустите пул приложений.
3. Настройка IIS для опубликованной базы: пул и права
После публикации в диспетчере IIS появится приложение buh внутри «Default Web Site». Дальше проверяют три вещи.
Разрядность пула
Откройте «Пулы приложений» → пул публикации → «Дополнительные параметры». Параметр «Разрешить 32-разрядные приложения»:
False— если установлена 64-разрядная платформа (обычный случай);True— только если на веб-сервере стоит 32-разрядная платформа.
Несовпадение разрядности — классическая причина ошибки HTTP 500.0 сразу после публикации.
Права на каталоги
| Каталог | Кому дать права | Какие |
|---|---|---|
C:\Program Files\1cv8\<версия>\bin | IIS_IUSRS | Чтение и выполнение |
Каталог публикации C:\inetpub\wwwroot\buh | IIS_IUSRS | Чтение |
| Каталог файловой базы | Удостоверение пула | Изменение |
Для серверной базы права на файлы базы не нужны: данные лежат в СУБД, веб-сервер общается только с кластером.
Файловая база на другом компьютере
Здесь кроется главный подвох. Пул по умолчанию работает от ApplicationPoolIdentity — локальной учётной записи, которую файловый сервер не знает. Доступа к \\fs01\bases\buh у неё не будет.
Решение:
- Создайте доменную служебную учётную запись, например
svc-1c-web. - Дайте ей права «Изменение» на общую папку и на NTFS-каталог базы.
- В «Дополнительных параметрах» пула измените «Удостоверение» на эту учётную запись.
- Перезапустите пул.
Файловая база через веб-сервер с несколькими пользователями работает медленно и рискует повредиться при сбое сети. Для постоянной работы 5+ человек через интернет переходите на клиент-серверный вариант.
4. Подключение Apache к 1С
Apache выбирают для Linux и когда на машине уже крутится другой сайт. Публикация из Конфигуратора или webinst -apache24 дописывает в httpd.conf нужные строки. Если правите вручную, блок выглядит так (Windows):
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/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>
На Linux модуль называется wsap24.so и лежит в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/. Публикация там делается так же через webinst с ключом -apache24 и -confpath до конфигурационного файла Apache.
Что проверить после правки:
httpd -t(на Linuxapachectl configtest) — синтаксис без ошибок.- Строка
LoadModuleдля 1С в файле одна. При смене версии платформы старую строку замените, а не добавляйте вторую. - Учётная запись службы Apache имеет доступ к каталогу публикации, а для файловой базы — и к каталогу базы.
- Служба Apache перезапущена.
Разрядность Apache и платформы 1С должна совпадать так же, как в IIS: 64-разрядный wsap24.dll не загрузится в 32-разрядный Apache.
5. Порты и сеть между веб-сервером и кластером 1С
Когда веб-сервер стоит отдельно, он подключается к серверу 1С как обычный клиент. Цепочка такая: агент сервера (порт 1540) → менеджер кластера (1541) → рабочие процессы (диапазон, по умолчанию 1560–1591, задаётся в свойствах рабочего сервера).
На брандмауэре сервера 1С откройте входящие подключения с адреса веб-сервера на все три значения. Закрытый диапазон рабочих процессов даёт неприятный симптом: соединение вроде бы начинается, а потом отваливается по таймауту.
Ещё два сетевых момента:
- 🧭 Имя сервера 1С из строки
Srvr=должно разрешаться с веб-сервера. Проверьтеping srv1c. Если DNS нет, добавьте запись вC:\Windows\System32\drivers\etc\hosts. - 🔒 Наружу из интернета открывайте только
443на веб-сервере. Порты кластера в интернет не публикуются никогда.
6. HTTPS и защита опубликованной базы
Базу, доступную снаружи, без HTTPS публиковать нельзя: логин и пароль 1С уйдут открытым текстом.
IIS
- Получите сертификат: коммерческий или бесплатный Let’s Encrypt (на Windows его удобно выпускать и продлевать утилитой win-acme).
- В диспетчере IIS: сайт → «Привязки» → добавить тип
https, порт443, выбрать сертификат. - Перенаправление с
httpнаhttpsнастройте модулем URL Rewrite или просто закройте порт 80 снаружи.
Apache
Включите mod_ssl, создайте VirtualHost *:443 с директивами SSLEngine on, SSLCertificateFile и SSLCertificateKeyFile. Блок публикации 1С оставьте общим или перенесите внутрь этого виртуального хоста.
Минимум по безопасности
- 🔑 У всех пользователей базы задан пароль; пользователь без пароля при внешней публикации — открытая дверь.
- 🚫 Публикуйте только нужное. OData и веб-сервисы, которые никто не использует, снимите галочками.
- 🧱 Если есть VPN, лучше оставить базу внутри него, а наружу не выставлять вообще.
- 📝 Включите журналы IIS или Apache и периодически смотрите, кто стучится в публикацию.
7. Диагностика: как найти причину, если опубликованная база не открывается
Когда ошибка не из списка выше, идите по цепочке от браузера к базе:
- Откройте адрес прямо на веб-сервере:
http://localhost/buh. Работает локально, но не снаружи — проблема в брандмауэре, DNS или привязках, а не в 1С. - Посмотрите журнал событий Windows («Приложение»): IIS пишет туда ошибки загрузки модуля. У Apache смотрите
logs\error.log. - Проверьте подключение к кластеру с веб-сервера. Утилитой
rac(из того же каталогаbin, при запущенной службеrasна сервере 1С) выполнитеrac cluster list srv1c:1545. Если кластер не виден — проблема сетевая. - Подключитесь тонким клиентом по адресу
http://web01/buh(тип подключения «На веб-сервере»). Если тонкий клиент работает, а браузер нет — смотрите настройки браузера: всплывающие окна и блокировщики. - Включите технологический журнал на веб-сервере, если всё остальное чисто. Файл
logcfg.xmlкладут в каталогconfплатформы.
Перезапуск пула приложений или службы Apache обрывает все веб-сеансы. Делайте это вне рабочего времени или предупредите пользователей.
8. Как ускорить веб-клиент на внешнем сервере
Веб-клиент чувствителен к задержкам сети: каждое действие — это обращения к серверу. Что реально помогает:
- 📍 Ставьте веб-сервер рядом с кластером. Между ними должна быть локальная сеть, а не канал между городами.
- 🗜️ Включите сжатие статического и динамического содержимого в IIS (или
mod_deflateв Apache). Трафик до пользователя заметно уменьшается. - ♻️ Перенесите переработку пула на ночь. По умолчанию IIS перезапускает пул каждые 1740 минут, то есть около 29 часов, и время «плавает». В «Дополнительных параметрах» пула отключите регулярный интервал и задайте конкретное время, например
03:00. Иначе пул перезапустится посреди рабочего дня и выкинет пользователей. - ⏱️ Увеличьте «Время простоя» пула (по умолчанию 20 минут) или установите
0, чтобы первый вход утром не ждал загрузки модуля. - 🧑💻 Предлагайте тонкий клиент через веб-сервер тем, кто работает в базе целый день. Он быстрее браузера, а публикация та же.
- 🌍 Браузер. Используйте актуальные Chrome, Edge, Firefox или Яндекс Браузер; старые версии хуже работают с веб-клиентом.
Частые вопросы
Можно ли опубликовать одну базу на двух веб-серверах?
Нужна ли лицензия 1С на веб-сервер?
Как сделать адрес без имени публикации, например просто https://1c.firma.ru?
/buh.