Публикация 1С через Apache, IIS и Nginx: от выбора сервера до защиты базы

· 9 мин

Содержание

Веб-сервер 1С — это обычный Apache или IIS, к которому подключён модуль расширения платформы 1С:Предприятие. Он принимает HTTP-запросы и передаёт их информационной базе. Нужен он, чтобы работать с базой через браузер (веб-клиент), подключать тонкий клиент по интернету и давать доступ к HTTP-сервисам, веб-сервисам и OData.

Отдельной «программы веб-сервер 1С» нет. Платформа ставит только модуль (wsap24.dll для Apache 2.4, wsisapi.dll для IIS), а утилита публикации прописывает его в настройки веб-сервера и создаёт файл default.vrd с описанием базы.

Веб-сервер для 1С: как он работает и когда без него не обойтись

Схема простая. Пользователь открывает адрес вида http://server/buh. Веб-сервер видит, что этот каталог опубликован для 1С, и передаёт запрос модулю платформы. Модуль читает default.vrd, находит строку подключения к базе и работает с ней как обычный клиент.

Дальше всё зависит от типа базы:

  • 📁 Файловая база. Модуль сам открывает файл 1Cv8.1CD. Процесс веб-сервера должен иметь права на запись в каталог базы.
  • 🖥 Клиент-серверная база . Модуль подключается к кластеру серверов 1С так же, как тонкий клиент: через агент (порт 1540) и менеджер кластера.

Веб-сервер нужен в таких случаях:

  • 🌐 сотрудники работают из дома или филиала, а VPN нет или он неудобен;
  • 📱 нужна мобильная работа через браузер или мобильный клиент;
  • 🔗 сайт, маркетплейс или мобильное приложение обмениваются данными с 1С через HTTP-сервисы, веб-сервисы или OData;
  • ☁️ база стоит в облаке, и клиенты подключаются к ней по HTTPS.

Когда он не нужен: все пользователи сидят в одной локальной сети или работают через удалённый рабочий стол (RDP). Тогда публикация добавит точку входа извне, но пользы не принесёт.

Отдельной лицензии на веб-сервер нет. Каждый пользователь веб-клиента или тонкого клиента через HTTP занимает клиентскую лицензию, как при обычном подключении.

Apache, IIS или Nginx: сравнение веб-серверов для 1С

Модули расширения в поставке платформы есть только для Apache и IIS. Nginx 1С напрямую не обслуживает. Его ставят перед Apache или IIS как обратный прокси: он принимает HTTPS, держит сертификат, ограничивает доступ и передаёт запросы дальше.

СерверОСКак подключается к 1СКогда выбирать
Apache 2.4Windows, Linuxмодуль wsap24универсальный вариант, единственный для Linux
IISWindowsрасширение ISAPI wsisapi.dllWindows Server, где уже есть IIS и домен
NginxWindows, Linuxобратный прокси перед Apache/IISHTTPS, балансировка, фильтрация по IP

Коротко по выбору:

  1. Сервер на Linux — только Apache 2.4 (опционально Nginx перед ним).
  2. Windows Server в домене — IIS удобен: он встроен в систему, есть доменная аутентификация и графическая настройка.
  3. Windows без IIS или нужна переносимость настроек — Apache 2.4. Вся публикация лежит в одном текстовом файле httpd.conf, его легко сохранить и перенести.
  4. База смотрит в интернет — добавьте Nginx перед основным веб-сервером. Сертификат Let’s Encrypt и ограничения удобнее держать в нём.

Что подготовить перед публикацией базы

До запуска утилиты публикации проверьте четыре вещи.

1. Модули расширения веб-сервера установлены. В установщике платформы для Windows это компонент «Модули расширения веб-сервера». По умолчанию он выключен. Если его нет, пункт публикации в Конфигураторе есть, но публикация завершится ошибкой. Доставьте компонент: запустите установщик той же версии и выберите «Изменить».

2. Разрядность совпадает. 64-разрядный Apache работает только с 64-разрядным модулем, 32-разрядный — с 32-разрядным. Для IIS при 32-разрядной платформе в пуле приложений включают параметр «Разрешить 32-разрядные приложения».

3. Веб-сервер стоит и отвечает. Откройте http://localhost на сервере. Должна появиться стартовая страница Apache или IIS.

4. Права выданы. Учётная запись веб-сервера должна читать каталог bin платформы. Для файловой базы нужны права на изменение каталога с базой.

Веб-серверПод какой учётной записью работает
IISгруппа IIS_IUSRS (и IUSR для анонимного доступа)
Apache на Windowsучётная запись службы Apache, по умолчанию «Локальная система»
Apache на Linuxобычно www-data (Debian/Ubuntu) или apache (RHEL-семейство)

Файловую базу через веб-сервер можно опубликовать, но уже при нескольких одновременных пользователях растут ожидания на блокировках и замедляется работа. Для работы через интернет лучше клиент-серверный вариант.

Как опубликовать базу на веб-сервере 1С: пошагово

Через Конфигуратор (Windows)

  1. Запустите Конфигуратор от имени администратора. Без этого программа не сможет записать настройки IIS или httpd.conf.
  2. Откройте базу и выберите Администрирование → Публикация на веб-сервере.
  3. В поле «Имя» укажите короткое латинское имя без пробелов, например buh. Оно станет частью адреса.
  4. Выберите веб-сервер: IIS или Apache 2.4. Для Apache укажите путь к httpd.conf.
  5. Каталог публикации оставьте предложенный или задайте свой, например C:\inetpub\wwwroot\buh.
  6. Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData.
  7. Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
  8. Проверьте адрес http://имя_сервера/buh в браузере.

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

Через утилиту webinst (без Конфигуратора, в том числе на Linux)

Утилита webinst лежит в каталоге bin платформы. Её удобно использовать в скриптах и на серверах без графики.

Публикация клиент-серверной базы на IIS:

"C:\Program Files\1cv8\<версия>\bin\webinst.exe" -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"

Публикация на Apache 2.4 в Linux:

cd /opt/1cv8/x86_64/<версия>
sudo ./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";. Внутри -connstr кавычки удваиваются: -connstr "File=""D:\Bases\buh"";".

Что появится в настройках Apache

После публикации в httpd.conf добавляется примерно такой блок. Его полезно знать: при проблемах проще поправить руками, чем публиковать заново.

LoadModule _1cws_module "C:/Program Files/1cv8/<версия>/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С и их исправление

Самая частая проблема возникает после обновления платформы. В LoadModule остаётся путь к старой версии. Если старую версию удалили, Apache не стартует. Если не удалили — веб-клиент выдаёт ошибку о несовпадении версий клиента и сервера. Исправьте номер версии в пути и перезапустите службу.

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

Ещё две ситуации, которые не видны по тексту ошибки:

  • 🔒 Работает с сервера, но не из сети. Брандмауэр Windows закрыт для порта 80 или 443. Откройте порт входящим правилом.
  • 🐢 Веб-клиент работает, но медленно грузит формы. Проверьте, включено ли сжатие на веб-сервере и не стоит ли антивирус с проверкой HTTP-трафика на сервере.

Защита опубликованной базы от атак и утечек

Опубликованная в интернет база — открытая дверь в учёт. Боты сканируют адреса вида /buh, /zup, /trade и перебирают пароли. Минимальный набор мер:

  1. Только HTTPS. Пароли пользователей 1С по HTTP идут открытым текстом. Сертификат Let’s Encrypt бесплатный, ставится на Nginx или Apache.
  2. Пароли у всех пользователей. Пользователь без пароля в опубликованной базе — то же, что открытая база. Удалите или заблокируйте лишние учётные записи, включая тестовые.
  3. Публикуйте только нужное. Если база отдаёт сайту только HTTP-сервис, снимите флажок публикации тонкого и веб-клиента. Если OData не используется, не включайте её.
  4. Неочевидное имя публикации. buh и zup боты проверяют первыми. Имя вроде acc-7f3k не защитит само по себе, но отсечёт массовое сканирование.
  5. Ограничение по IP. Если пользователи работают из известных офисов, разрешите доступ только с их адресов. В Nginx это allow/deny.
  6. Отдельная учётная запись службы. Не оставляйте Apache работать от «Локальной системы» на сервере с базами. Создайте пользователя с правами только на нужные каталоги.

Пример заготовки Nginx перед Apache, который слушает порт 8080:

server {
    listen 443 ssl http2;
    server_name 1c.example.ru;

    ssl_certificate     /etc/letsencrypt/live/1c.example.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/1c.example.ru/privkey.pem;

    client_max_body_size 100m;

    location /buh/ {
        allow 203.0.113.0/24;
        deny  all;
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_read_timeout 600s;
    }
}

client_max_body_size нужен, чтобы пользователи могли прикладывать файлы. proxy_read_timeout — чтобы долгие отчёты не обрывались по таймауту прокси.

Публикация не заменяет резервное копирование. Шифровальщики приходят и через открытые веб-публикации, поэтому копии баз должны храниться на отдельном носителе.

Веб-сервер 1С в облаке и на VPS

Развернуть веб-сервер для 1С на арендованном сервере можно двумя способами.

Всё на одной машине. На VPS ставятся сервер 1С, СУБД (PostgreSQL или MS SQL) и Apache. Подходит для 5-20 пользователей. Ориентир по ресурсам: от 4 ядер и 8 ГБ памяти, быстрый SSD-диск. Аренда такой машины в российских дата-центрах стоит примерно 3-6 тыс. руб. в месяц, без учёта лицензий 1С и Windows.

Веб-сервер отдельно. Apache с Nginx стоят на отдельной небольшой машине в демилитаризованной зоне, а сервер 1С и СУБД — во внутренней сети. Наружу открыт только порт 443 веб-сервера. Так делают при 30+ пользователях и требованиях к безопасности.

Что учесть в облаке:

  • 🧾 Лицензии. Программные лицензии 1С привязываются к параметрам машины. При смене конфигурации VPS (процессор, память, сетевая карта) лицензия может слететь. Держите пин-коды и данные регистрации под рукой.
  • 🌍 Расположение. Персональные данные сотрудников и клиентов граждан РФ должны храниться в базах на территории России (152-ФЗ). Для базы с ЗУП это прямо касается выбора дата-центра.
  • 🕓 Задержка. Веб-клиент чувствителен к пингу. Сервер в том же регионе, что и пользователи, ощутимо быстрее.

Держать собственный веб-сервер выгодно, когда есть администратор и своя инфраструктура. Если их нет, у фирмы 1С есть два готовых варианта.

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

1С:Link — сервис, который даёт доступ к базе, стоящей у вас в офисе, через интернет без белого IP-адреса и без настройки веб-сервера руками. На компьютер с базой ставится программа сервиса, она сама публикует базу и создаёт защищённый канал до серверов 1С:Link. Пользователи получают адрес и подключаются по HTTPS. Подходит небольшим офисам, у которых нет админа и статического адреса.

ВариантГде базаКто обслуживаетДоработки
Свой веб-серверу вас или на вашем VPSваш администраторлюбые
1С:Linkу васвы, публикацию — сервислюбые
1С:Freshу поставщикапоставщикограничены

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

Можно ли опубликовать на одном веб-сервере несколько баз?
Да. Каждая база получает своё имя публикации и свой каталог с default.vrd. Модуль расширения подключается один раз на весь веб-сервер.
Нужна ли на веб-сервере установленная платформа 1С?
Да, нужны модули расширения веб-сервера той же версии, что и сервер 1С. Полную клиентскую часть ставить не обязательно.
Какой браузер подходит для веб-клиента 1С?
Актуальные версии Chrome, Firefox, Edge, Safari и Яндекс Браузера. Нужно разрешить всплывающие окна для адреса базы.
Можно ли подключиться к опубликованной базе тонким клиентом?
Да. В списке баз добавьте базу с типом расположения «На веб-сервере» и укажите адрес публикации, например https://1c.example.ru/buh .
Как снять публикацию базы?
В Конфигураторе откройте тот же пункт публикации и нажмите «Отключить», или выполните webinst с ключом -delete. Веб-сервер затем перезапустится.