Публикация базы 1С на IIS: веб-сервисы, HTTP-сервисы и безопасность
Содержание
Веб-сервис 1С начинает работать после публикации базы на веб-сервере. Для этого нужны три вещи: включённые компоненты IIS, модуль расширения веб-сервера от платформы и публикация, созданная из конфигуратора. Остальное, от пула приложений до сертификата, это тонкая настройка.
Типичная ситуация: разработчик сделал в конфигурации веб-сервис для обмена с интернет-магазином. В конфигураторе всё работает, а по адресу http://сервер/база/ws/... приходит ошибка 404 или 500. Причина почти всегда в публикации, а не в самом сервисе. Ниже порядок действий, который работает на Windows Server с IIS.
Что понадобится заранее
Проверьте четыре пункта до того, как открывать конфигуратор:
- 🖥️ Windows Server (или Windows 10/11 для тестового стенда) с правами администратора.
- 📦 Платформа 1С той же разрядности, что и планируемый пул приложений. Для 64-разрядной платформы нужен 64-разрядный пул.
- 🧩 При установке платформы отмечен компонент «Модули расширения веб-серверов». Если его не было, запустите установщик ещё раз в режиме изменения.
- 🔑 Учётная запись, под которой работает пул, имеет доступ к файловой базе или к кластеру серверов 1С.
Публикация открывает базу наружу. Тестируйте на копии, а не на рабочей базе с реальными данными клиентов.
1. Включаем компоненты IIS на сервере
Откройте «Диспетчер серверов» → «Добавить роли и компоненты» → роль «Веб-сервер (IIS)». На Windows 10/11 путь другой: «Включение или отключение компонентов Windows».
Минимальный набор:
| Группа | Что отметить | Зачем |
|---|---|---|
| Общие функции HTTP | Статическое содержимое, документ по умолчанию | Базовая работа сайта |
| Разработка приложений | Расширения ISAPI | Через них работает модуль 1С |
| Разработка приложений | Фильтры ISAPI | Нужны для части сценариев публикации |
| Безопасность | Фильтрация запросов | Ограничения на размер и адреса |
| Безопасность | Обычная проверка подлинности | Вход по логину и паролю 1С |
| Безопасность | Проверка подлинности Windows | Если нужна доменная авторизация |
После установки откройте в браузере http://localhost. Должна появиться стартовая страница IIS. Если её нет, дальше идти рано: проверьте, запущена ли служба «Служба публикации в World Wide Web».
💡 Не отмечайте компоненты «про запас». Каждый лишний модуль увеличивает поверхность атаки.
2. Настраиваем пул приложений и сайт
Для публикации 1С хорошо работает отдельный пул. Тогда его настройки и права не зависят от других сайтов на сервере.
- В диспетчере IIS откройте «Пулы приложений» → «Добавить пул приложений».
- Имя задайте понятное, например
pool1c. - Версия среды CLR: «Без управляемого кода». Модуль 1С нативный, .NET ему не нужен.
- Режим конвейера: «Встроенный».
- Откройте «Дополнительные параметры» и найдите «Разрешены 32-разрядные приложения». Для 64-разрядной платформы значение
False, для 32-разряднойTrue. - В пункте «Удостоверение» укажите учётную запись, под которой пул будет ходить к базе.
Разрядность это самая частая причина того, что сервис «не стартует без видимых причин». Модуль wsisapi.dll берётся из каталога платформы bin и должен подходить пулу.
Если база серверная, учётная запись пула должна иметь право подключаться к кластеру. Для файловой базы нужен доступ на запись в каталог с файлом 1Cv8.1CD.
Создавать отдельный сайт необязательно. Можно публиковать в «Default Web Site» как вложенное приложение. Отдельный сайт нужен, если вы хотите свой порт или своё имя хоста.
3. Создаём публикацию в конфигураторе
Это главный шаг. Запустите конфигуратор от имени администратора, иначе он не сможет записать файлы в каталог IIS и изменить настройки веб-сервера.
Откройте «Администрирование» → «Публикация на веб-сервере». В форме заполните поля:
- Имя задаёт адрес. Если ввести
trade, база будет доступна поhttp://сервер/trade. Используйте латиницу без пробелов. - Веб-сервер выберите из списка. Обычно это Internet Information Services.
- Каталог хранит файлы публикации. По умолчанию подставляется папка внутри
inetpub\wwwroot. - Публиковать тонкий клиент и веб-клиент включайте, только если пользователи будут заходить через браузер.
- Публиковать стандартный интерфейс OData нужен для обмена через OData.
Дальше отметьте нужное на вкладках публикации. Для веб-сервисов откройте вкладку «Веб-сервисы» и поставьте галочки у тех сервисов, которые должны быть доступны. Для HTTP-сервисов есть своя вкладка. Неотмеченный сервис по сети не отвечает, даже если в конфигурации он описан.
Нажмите «Опубликовать». Платформа создаст каталог, положит туда файл default.vrd и добавит обработчик в IIS.
То же из командной строки
Для скриптов и серверов без графики есть утилита webinst. Пример для публикации с серверной базой:
webinst.exe -publish -iis -wsdir trade -dir C:\inetpub\wwwroot\trade ^
-connstr "Srvr=srv1c;Ref=trade;" -confPath C:\Windows\System32\inetsrv\config\applicationHost.config
Параметры подставьте свои. Утилита лежит в каталоге bin установленной платформы. Запускайте командную строку от администратора.
Что лежит в default.vrd
Файл default.vrd описывает публикацию: какая база, какие сервисы разрешены, как проходит вход. Его можно править вручную, но проще перепубликовать из конфигуратора. Перед ручной правкой сделайте копию файла.
4. Подключаем веб-сервисы и HTTP-сервисы в конфигурации
Публикация сама по себе ничего не создаёт. Сервис должен существовать в конфигурации.
В конфигураторе в дереве метаданных есть две ветки:
- Веб-сервисы: SOAP, описывают операции и параметры. Адрес описания (WSDL) вида
http://сервер/trade/ws/имясервиса?wsdl. - HTTP-сервисы: REST-подобные, с шаблонами URL и методами. Адрес вида
http://сервер/trade/hs/имясервиса/....
У каждого сервиса есть имя файла публикации и адрес корня. Они влияют на итоговую ссылку. Сменили имя в конфигураторе, поменяется и URL, а клиенты продолжат ходить по старому.
Проверка после публикации занимает минуту:
- Откройте в браузере адрес WSDL. Должен загрузиться XML с описанием.
- Если запрашивается логин и пароль, введите пользователя 1С с правами на сервис.
- Если приходит пустая страница или ошибка, переходите к разделу про диагностику.
💡 После любого изменения структуры сервиса в конфигурации публикацию нужно обновить: заново нажать «Опубликовать». Иначе IIS отдаёт прежнее описание.
localhost): IIS показывает детали только локально. Чаще всего это разрядность пула или нет прав на каталог публикации.default.vrd и включённую обычную проверку подлинности в IIS.5. Безопасность: HTTPS, пользователи и ограничения
Открытый по HTTP сервис передаёт логин и пароль почти открытым текстом. Basic-авторизация только кодирует их в base64. Для всего, что видно из интернета, HTTPS обязателен.
Сертификат и привязка
- Получите сертификат для вашего домена. Подойдёт бесплатный Let’s Encrypt или платный от любого удостоверяющего центра.
- Установите его в хранилище сервера.
- В диспетчере IIS откройте сайт → «Привязки» → «Добавить», тип
https, порт443, выберите сертификат. - Проверьте адрес с
https://в браузере. Замок должен быть закрытым без предупреждений. - Для старого адреса настройте перенаправление на HTTPS.
Отдельный пользователь для интеграции
Не используйте для обмена учётную запись администратора базы. Заведите пользователя только под сервис и выдайте минимальную роль:
- 👤 Пользователь существует только для сервиса и не входит в интерфейс.
- 🔒 Роль даёт доступ к нужным объектам и ничего лишнего.
- 📝 В журнале регистрации видно, что действия совершил именно он.
Ограничение доступа по адресам
Если сервис нужен одному партнёру, разрешите ему адрес на уровне IIS («Ограничения IP-адресов и доменов») или на межсетевом экране. Остальным закрытый порт лучше любой авторизации.
Не публикуйте на внешний адрес базу целиком, если нужен один сервис. В публикации отключайте веб-клиент и всё, что не используется.
Ещё несколько мер:
- Меняйте пароли пользователей сервиса при увольнении тех, кто их знал.
- Ограничьте размер запроса в «Фильтрации запросов», чтобы нельзя было залить огромный файл.
- Держите платформу и Windows в актуальных обновлениях.
6. Диагностика ошибок и логи
Когда сервис не отвечает, идите от простого к сложному: сначала сам IIS, затем модуль 1С, затем конфигурация.
Где искать причину
| Источник | Что показывает |
|---|---|
Журнал IIS в C:\inetpub\logs\LogFiles | Код ответа и адрес каждого запроса |
| Просмотр событий Windows | Падения пула, ошибки модуля |
| Журнал регистрации 1С | Вход пользователя и ошибки внутри базы |
| Трассировка неудавшихся запросов | Подробный путь запроса внутри IIS |
Частые причины
- 404.2 или «ISAPI restriction»: модуль не разрешён. В диспетчере IIS откройте «Ограничения ISAPI и CGI» на уровне сервера и разрешите
wsisapi.dll. - 500.0 и сбой при загрузке модуля: не совпала разрядность. Поправьте «Разрешены 32-разрядные приложения».
- Доступ запрещён к каталогу: у учётной записи пула нет прав на папку публикации.
- Сервис отвечает, но в ответе ошибка 1С: смотрите журнал регистрации, дело уже в коде или правах пользователя.
- Нет свободных лицензий: каждый запрос от пользователя занимает сеанс. При нехватке лицензий часть запросов получает отказ.
Чтобы включить журнал детально, временно повысьте уровень логирования в IIS и отключите его, как только нашли причину. Иначе диск заполнится за недели.
Как проверить сервис после публикации
Не ограничивайтесь браузером. Браузер покажет только описание, а вызов операции нужно проверить отдельно.
- Возьмите любой клиент для SOAP или REST и отправьте простой запрос, который ничего не меняет в базе, например получение справочной информации.
- Проверьте код ответа.
200значит, что запрос дошёл и обработан.401говорит о проблеме с логином,403о нехватке прав,404об ошибке адреса. - Загляните в журнал регистрации 1С. Там должен появиться вход пользователя сервиса. Если записи нет, запрос не дошёл до платформы и дело в IIS или сети.
- Замерьте время ответа. Первый вызов после простоя бывает долгим, потому что пул запускается заново. Если задержка мешает обмену, в настройках пула отключите остановку по простою.
💡 Отдельно проверьте большие запросы: выгрузку номенклатуры на тысячи строк. Именно на них упираются в ограничения размера и таймауты.
Если ничего не помогло
Сузьте круг проверок. Это короткий путь, который экономит часы:
- Опубликуйте тестовую пустую базу в новом каталоге. Заработала, значит проблема в вашей конфигурации.
- Не заработала: сравните пул и права с эталонными, как в разделе 2.
- Переустановите модуль расширения веб-сервера через установщик платформы.
- Попробуйте обратиться к сервису с самого сервера, потом из локальной сети, потом снаружи. Так видно, где рвётся цепочка: в IIS, в сети или на межсетевом экране.
Если нужна высокая нагрузка или надёжность, смотрите в сторону отдельного веб-сервера на Linux с Apache. Публикация там создаётся той же командой webinst с другими параметрами.
Частые вопросы
Нужно ли ставить 1С на тот же сервер, где IIS?
Можно ли опубликовать несколько баз на одном IIS?
Почему после обновления платформы сервис перестал работать?
wsisapi.dll.