Публикация базы 1С на IIS: веб-сервисы, HTTP-сервисы и безопасность

· 9 мин

Содержание

Веб-сервис 1С начинает работать после публикации базы на веб-сервере. Для этого нужны три вещи: включённые компоненты IIS, модуль расширения веб-сервера от платформы и публикация, созданная из конфигуратора. Остальное, от пула приложений до сертификата, это тонкая настройка.

Типичная ситуация: разработчик сделал в конфигурации веб-сервис для обмена с интернет-магазином. В конфигураторе всё работает, а по адресу http://сервер/база/ws/... приходит ошибка 404 или 500. Причина почти всегда в публикации, а не в самом сервисе. Ниже порядок действий, который работает на Windows Server с IIS.

Что понадобится заранее

Проверьте четыре пункта до того, как открывать конфигуратор:

  • 🖥️ Windows Server (или Windows 10/11 для тестового стенда) с правами администратора.
  • 📦 Платформа 1С той же разрядности, что и планируемый пул приложений. Для 64-разрядной платформы нужен 64-разрядный пул.
  • 🧩 При установке платформы отмечен компонент «Модули расширения веб-серверов». Если его не было, запустите установщик ещё раз в режиме изменения.
  • 🔑 Учётная запись, под которой работает пул, имеет доступ к файловой базе или к кластеру серверов 1С.

Публикация открывает базу наружу. Тестируйте на копии, а не на рабочей базе с реальными данными клиентов.

Перед публикацией
Выполнено: 0 / 5

1. Включаем компоненты IIS на сервере

Откройте «Диспетчер серверов» → «Добавить роли и компоненты» → роль «Веб-сервер (IIS)». На Windows 10/11 путь другой: «Включение или отключение компонентов Windows».

Минимальный набор:

ГруппаЧто отметитьЗачем
Общие функции HTTPСтатическое содержимое, документ по умолчаниюБазовая работа сайта
Разработка приложенийРасширения ISAPIЧерез них работает модуль 1С
Разработка приложенийФильтры ISAPIНужны для части сценариев публикации
БезопасностьФильтрация запросовОграничения на размер и адреса
БезопасностьОбычная проверка подлинностиВход по логину и паролю 1С
БезопасностьПроверка подлинности WindowsЕсли нужна доменная авторизация

После установки откройте в браузере http://localhost. Должна появиться стартовая страница IIS. Если её нет, дальше идти рано: проверьте, запущена ли служба «Служба публикации в World Wide Web».

💡 Не отмечайте компоненты «про запас». Каждый лишний модуль увеличивает поверхность атаки.

2. Настраиваем пул приложений и сайт

Для публикации 1С хорошо работает отдельный пул. Тогда его настройки и права не зависят от других сайтов на сервере.

  1. В диспетчере IIS откройте «Пулы приложений» → «Добавить пул приложений».
  2. Имя задайте понятное, например pool1c.
  3. Версия среды CLR: «Без управляемого кода». Модуль 1С нативный, .NET ему не нужен.
  4. Режим конвейера: «Встроенный».
  5. Откройте «Дополнительные параметры» и найдите «Разрешены 32-разрядные приложения». Для 64-разрядной платформы значение False, для 32-разрядной True.
  6. В пункте «Удостоверение» укажите учётную запись, под которой пул будет ходить к базе.

Разрядность это самая частая причина того, что сервис «не стартует без видимых причин». Модуль 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-сервисы в конфигурации

Публикация сама по себе ничего не создаёт. Сервис должен существовать в конфигурации.

В конфигураторе в дереве метаданных есть две ветки:

  1. Веб-сервисы: SOAP, описывают операции и параметры. Адрес описания (WSDL) вида http://сервер/trade/ws/имясервиса?wsdl.
  2. HTTP-сервисы: REST-подобные, с шаблонами URL и методами. Адрес вида http://сервер/trade/hs/имясервиса/....

У каждого сервиса есть имя файла публикации и адрес корня. Они влияют на итоговую ссылку. Сменили имя в конфигураторе, поменяется и URL, а клиенты продолжат ходить по старому.

Проверка после публикации занимает минуту:

  1. Откройте в браузере адрес WSDL. Должен загрузиться XML с описанием.
  2. Если запрашивается логин и пароль, введите пользователя 1С с правами на сервис.
  3. Если приходит пустая страница или ошибка, переходите к разделу про диагностику.

💡 После любого изменения структуры сервиса в конфигурации публикацию нужно обновить: заново нажать «Опубликовать». Иначе IIS отдаёт прежнее описание.

Диагностика: выберите симптом

5. Безопасность: HTTPS, пользователи и ограничения

Открытый по HTTP сервис передаёт логин и пароль почти открытым текстом. Basic-авторизация только кодирует их в base64. Для всего, что видно из интернета, HTTPS обязателен.

Сертификат и привязка

  1. Получите сертификат для вашего домена. Подойдёт бесплатный Let’s Encrypt или платный от любого удостоверяющего центра.
  2. Установите его в хранилище сервера.
  3. В диспетчере IIS откройте сайт → «Привязки» → «Добавить», тип https, порт 443, выберите сертификат.
  4. Проверьте адрес с https:// в браузере. Замок должен быть закрытым без предупреждений.
  5. Для старого адреса настройте перенаправление на 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 и отключите его, как только нашли причину. Иначе диск заполнится за недели.

Как проверить сервис после публикации

Не ограничивайтесь браузером. Браузер покажет только описание, а вызов операции нужно проверить отдельно.

  1. Возьмите любой клиент для SOAP или REST и отправьте простой запрос, который ничего не меняет в базе, например получение справочной информации.
  2. Проверьте код ответа. 200 значит, что запрос дошёл и обработан. 401 говорит о проблеме с логином, 403 о нехватке прав, 404 об ошибке адреса.
  3. Загляните в журнал регистрации 1С. Там должен появиться вход пользователя сервиса. Если записи нет, запрос не дошёл до платформы и дело в IIS или сети.
  4. Замерьте время ответа. Первый вызов после простоя бывает долгим, потому что пул запускается заново. Если задержка мешает обмену, в настройках пула отключите остановку по простою.

💡 Отдельно проверьте большие запросы: выгрузку номенклатуры на тысячи строк. Именно на них упираются в ограничения размера и таймауты.

Если ничего не помогло

Сузьте круг проверок. Это короткий путь, который экономит часы:

  1. Опубликуйте тестовую пустую базу в новом каталоге. Заработала, значит проблема в вашей конфигурации.
  2. Не заработала: сравните пул и права с эталонными, как в разделе 2.
  3. Переустановите модуль расширения веб-сервера через установщик платформы.
  4. Попробуйте обратиться к сервису с самого сервера, потом из локальной сети, потом снаружи. Так видно, где рвётся цепочка: в IIS, в сети или на межсетевом экране.

Если нужна высокая нагрузка или надёжность, смотрите в сторону отдельного веб-сервера на Linux с Apache. Публикация там создаётся той же командой webinst с другими параметрами.

Частые вопросы

Нужно ли ставить 1С на тот же сервер, где IIS?
Нет. Веб-сервер может быть отдельной машиной. Ему нужен только модуль расширения платформы и сетевой доступ к кластеру серверов.
Можно ли опубликовать несколько баз на одном IIS?
Да. Каждая база получает своё имя публикации и свой каталог. Для изоляции удобно держать каждую в своём пуле приложений.
Почему после обновления платформы сервис перестал работать?
Обновление меняет версию модуля. Перепубликуйте базу из конфигуратора, чтобы в каталоге и в IIS стал актуальный wsisapi.dll.
Можно ли обойтись без HTTPS внутри локальной сети?
Технически да, но пароль уйдёт в сеть без шифрования. Для тестов допустимо, для рабочей среды лучше включить HTTPS.
Чем веб-сервис отличается от HTTP-сервиса?
Веб-сервис работает по SOAP и описывается WSDL, его удобно подключать из других систем. HTTP-сервис устроен свободнее: вы сами задаёте адреса и методы, как в REST.