Веб-доступ к 1С через IIS: роли Windows, пул приложений, права и проверка
Содержание
Чтобы опубликовать базу 1С на IIS, нужны три вещи: роль «Веб-сервер (IIS)» с компонентом «Расширения ISAPI», установленные «Модули расширения веб-сервера» платформы 1С и запуск Конфигуратора от имени администратора с командой Администрирование → Публикация на веб-сервере. После публикации база открывается в браузере по адресу вида http://имя-сервера/buh, а тонкий клиент подключается к ней по тому же адресу.
Основная часть сбоев приходится не на саму публикацию, а на разрядность модуля, пул приложений и права учётной записи IIS на каталог базы. Если настроить их сразу, публикация занимает 15–20 минут. Инструкция подходит для платформы 8.3 и Windows Server 2016 и новее, а также для Windows 10/11, где IIS ставится как компонент системы.
Что подготовить на сервере до публикации
Сначала определитесь, где будет работать IIS. Для файловой базы веб-сервер удобнее ставить на тот же компьютер, где лежит каталог базы: не придётся раздавать сетевые права. Для клиент-серверной базы IIS можно поставить на отдельную машину, лишь бы с неё был доступ к серверу 1С по портам 1540, 1541 и диапазону рабочих процессов.
Роли и компоненты IIS
На Windows Server роль добавляется через Диспетчер серверов → Управление → Добавить роли и компоненты → Веб-сервер (IIS). В составе роли отметьте:
- 🧩 Разработка приложений → Расширения ISAPI и Фильтры ISAPI — без них модуль 1С не запустится;
- 📄 Основные функции HTTP → Статическое содержимое и Документ по умолчанию — веб-клиент отдаёт статические файлы;
- 🔐 Безопасность → Обычная проверка подлинности и Проверка подлинности Windows — понадобятся, если вход будет по доменной учётке;
- 🛠 Средства управления → Консоль управления IIS.
То же самое быстрее сделать одной командой PowerShell от имени администратора:
Install-WindowsFeature Web-Server, Web-Static-Content, Web-Default-Doc, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Basic-Auth, Web-Windows-Auth, Web-Mgmt-Console
На Windows 10/11 то же самое включается в Панель управления → Программы и компоненты → Включение или отключение компонентов Windows → Службы IIS.
Компонент платформы 1С
В установщике платформы есть отдельный пункт «Модули расширения веб-сервера». По умолчанию он не выбран. Если платформа уже стоит, запустите установщик той же версии повторно, выберите «Изменить» и добавьте компонент.
После установки в каталоге C:\Program Files\1cv8\<версия>\bin\ появится файл wsisapi.dll — это и есть модуль, который IIS будет вызывать.
Разрядность важна. 64-разрядная платформа ставится в C:\Program Files\1cv8, 32-разрядная — в C:\Program Files (x86)\1cv8. Пул приложений IIS должен работать в той же разрядности, что и модуль. Это главная причина ошибки 500 после «успешной» публикации.
Пул приложений под 1С: отдельный и правильно настроенный
Публикация из Конфигуратора по умолчанию помещает приложение в DefaultAppPool. Работать будет, но держать 1С в общем пуле с другими сайтами неудобно: перезапуск пула ради одного сайта рвёт сеансы всех остальных. Лучше сразу создать отдельный пул.
Создание пула
- Откройте
Диспетчер служб IIS(командаinetmgr). - В дереве слева выберите
Пулы приложений, справа — «Добавить пул приложений». - Имя — например,
1C. Версия среды CLR .NET — «Без управляемого кода»: модулю 1С .NET не нужен. - Режим конвейера — «Встроенный».
Параметры, которые стоит поменять
Откройте у созданного пула «Дополнительные параметры» и проверьте значения из таблицы.
| Параметр | Значение | Зачем |
|---|---|---|
| Разрешены 32-разрядные приложения | False для 64-битной платформы, True для 32-битной | Совпадение разрядности с wsisapi.dll |
| Удостоверение | ApplicationPoolIdentity или отдельная служебная учётка | От этой учётки идут обращения к файлам базы |
| Время простоя (минуты) | 0 | Пул не выгружается ночью, первый вход утром не тормозит |
| Регулярный интервал перезапуска | 0 или ночное время по расписанию | По умолчанию пул перезапускается каждые 1740 минут — посреди рабочего дня это обрывает сеансы |
Те же настройки через командную строку:
cd %windir%\system32\inetsrv
appcmd add apppool /name:1C /managedRuntimeVersion:""
appcmd set apppool 1C /enable32BitAppOnWin64:false
appcmd set apppool 1C /processModel.idleTimeout:00:00:00
Модуль wsisapi.dll в настройках IIS
При публикации из Конфигуратора платформа сама прописывает обработчик для wsisapi.dll в файле web.config каталога публикации. Но два места стоит проверить руками — особенно после обновления платформы или если на сервере уже публиковали базы.
Ограничения ISAPI и CGI
На уровне сервера (корень дерева в inetmgr) откройте «Ограничения ISAPI и CGI». В списке должна быть строка с путём к wsisapi.dll нужной версии и состоянием «Разрешено». Если строки нет или стоит «Запрещено», IIS вернёт ошибку 404.2.
При необходимости добавьте запись вручную: укажите полный путь, например C:\Program Files\1cv8\8.3.25.1374\bin\wsisapi.dll, и отметьте разрешение выполнения.
Сопоставления обработчиков
На уровне опубликованного приложения откройте «Сопоставления обработчиков». Там должен быть обработчик с модулем IsapiModule и путём к wsisapi.dll. Если путь ведёт в каталог старой версии платформы, которую уже удалили, публикация перестанет работать.
Каталог платформы содержит номер версии. Поэтому после каждого обновления платформы на сервере публикацию нужно обновить: открыть Конфигуратор новой версией и нажать «Опубликовать» ещё раз или выполнить webinst новой версии. Старую версию платформы удаляйте только после этого.
Публикуем базу: из Конфигуратора или командой webinst
Через Конфигуратор
- Запустите 1С от имени администратора (правый клик по ярлыку). Без повышенных прав платформа не сможет записать настройки IIS.
- Откройте нужную базу в режиме Конфигуратора.
- Выберите
Администрирование → Публикация на веб-сервере. - Заполните форму:
- Имя — часть адреса после имени сервера, латиницей без пробелов:
buh,zup,trade; - Веб-сервер — Internet Information Services;
- Каталог — например,
C:\inetpub\wwwroot\buh; - флажок «Публиковать тонкий клиент и веб-клиент» — оставить;
- веб-сервисы, HTTP-сервисы и OData — отмечайте только то, чем реально пользуетесь (обмены, мобильное приложение, интеграции).
- Имя — часть адреса после имени сервера, латиницей без пробелов:
- Нажмите «Опубликовать». Платформа предложит перезапустить веб-сервер — согласитесь.
Перезапуск IIS обрывает все текущие веб-сеансы на этом сервере. Если базы уже опубликованы и с ними работают люди, публикуйте новую в нерабочее время.
Через webinst
Утилита webinst.exe лежит в той же папке bin платформы. Она удобна для серверных баз, когда Конфигуратор запускать не хочется, и для скриптов:
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;"
Для файловой базы строка соединения выглядит так: -connstr "File=""D:\Bases\Buh"";". Полный список ключей выводит webinst без параметров.
Перенос приложения в свой пул
После публикации приложение buh окажется в пуле по умолчанию. Переключите его в созданный пул: в inetmgr выберите приложение → «Основные настройки» → «Пул приложений» → 1C. Или командой:
%windir%\system32\inetsrv\appcmd set app "Default Web Site/buh" /applicationPool:1C
Что появляется в каталоге публикации
В папке C:\inetpub\wwwroot\buh создаются два файла:
- 📄
default.vrd— описание публикации: строка соединения с базой в атрибутеib, список опубликованных сервисов; - 📄
web.config— привязка IIS к модулюwsisapi.dll.
Править default.vrd руками можно, например, чтобы поменять сервер
в строке соединения. После правки перезапустите пул приложений.
Права доступа: кто и к чему обращается
Модуль 1С работает внутри рабочего процесса IIS, поэтому к файлам он обращается от имени удостоверения пула. При ApplicationPoolIdentity это виртуальная учётная запись IIS AppPool\1C (по имени пула), которая входит в группу IIS_IUSRS.
| Объект | Кому дать права | Какие |
|---|---|---|
Каталог публикации C:\inetpub\wwwroot\buh | IIS_IUSRS | Чтение |
Каталог платформы C:\Program Files\1cv8\<версия>\bin | IIS_IUSRS | Чтение и выполнение |
| Каталог файловой базы | IIS AppPool\1C или IIS_IUSRS | Изменение |
Для файловой базы права на изменение обязательны: при входе платформа создаёт и меняет служебные файлы рядом с 1Cv8.1CD. Если база лежит в общей папке на другом компьютере, виртуальная учётка пула туда не попадёт. Тогда задайте пулу удостоверение доменной служебной учётки и выдайте права ей — и на общую папку, и на NTFS.
Для клиент-серверной базы файловые права не нужны. Достаточно, чтобы сервер с IIS видел сервер 1С по сети, а в строке соединения был правильный кластер и имя базы.
Не давайте пулу права администратора и не открывайте каталог базы для «Все». Если пул взломают через уязвимость, злоумышленник получит ровно те права, которые есть у пула.
Вход пользователей: пароль 1С, доменная учётка, HTTPS
Два уровня проверки
При веб-доступе работают два независимых слоя:
- IIS проверяет, кого вообще пускать к приложению. По умолчанию включена анонимная проверка подлинности — IIS пропускает всех.
- 1С проверяет пользователя информационной базы: логин и пароль 1С или аутентификацию операционной системы.
Вход по логину и паролю 1С
Самый простой вариант. В IIS оставляете анонимный доступ, а в самой базе у каждого пользователя задан пароль. Браузер покажет стандартное окно входа 1С.
Вход по доменной учётной записи
- В
inetmgrу приложения откройте «Проверка подлинности»: включите «Проверка подлинности Windows», отключите анонимную. - В базе откройте карточку пользователя (
Администрирование → Пользователи и правав БП 3.0 и ЗУП 3.1 или список пользователей в Конфигураторе) и отметьте вход через аутентификацию операционной системы с пользователем видаDOMAIN\ivanov. - При публикации через
webinstдля этого сценария предусмотрен ключ-osauth.
Публикация наружу
Если база должна открываться из интернета, не публикуйте её по голому HTTP: пароли и данные пойдут открытым текстом.
- 🔒 добавьте сайту привязку HTTPS на порту 443 с действующим сертификатом;
- 🚪 на маршрутизаторе пробрасывайте только 443, а не 80;
- 👤 запретите вход пользователям без пароля и отключите пользователя с пустым именем;
- 🧱 по возможности ограничьте доступ VPN или списком IP-адресов в «Ограничениях IP-адресов и доменов» IIS (компонент ставится отдельно).
Лицензии
Веб-клиент и тонкий клиент, подключённые через веб-сервер, занимают клиентские лицензии так же, как обычное подключение. Для файловой базы лицензии нужны на компьютере с IIS, для клиент-серверной — платформа получает их обычным для кластера порядком. Публикация лицензии не экономит.
Проверяем результат и подключаем пользователей
- Откройте на самом сервере
http://localhost/buh— должно появиться окно входа или сразу рабочий стол базы. - Откройте тот же адрес с другого компьютера сети:
http://имя-сервера/buh. Если локально работает, а по сети нет — проверьте брандмауэр Windows на порт 80/443. - Для тонкого клиента: в окне запуска 1С нажмите «Добавить» → «Добавление в список существующей информационной базы» → тип расположения «На веб-сервере» и укажите адрес
http://имя-сервера/buh.
Тонкий клиент через веб-сервер обычно удобнее браузера: привычный интерфейс, работают печать и файлы без расширения браузера. Веб-клиент хорош там, где установить платформу нельзя.
Частые вопросы
Можно ли опубликовать несколько баз на одном IIS?
/buh, /zup, /trade. Пул приложений можно использовать один на все базы одной версии платформы или завести отдельные, чтобы перезапуск одного не задевал остальные.Нужен ли Windows Server или хватит Windows 10/11?
Чем публикация на IIS отличается от публикации на Apache?
Как снять публикацию базы?
Администрирование → Публикация на веб-сервере и нажмите «Отключить». Командой: webinst -delete -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh". Сам каталог с файлами базы при этом не трогается.