Как открыть базу 1С через браузер: публикация на IIS и Apache, HTTPS через Nginx

· 9 мин

Содержание

Базу 1С публикуют в веб из Конфигуратора: Администрирование → Публикация на веб-сервере, или утилитой webinst из каталога платформы. Публикация создаёт на веб-сервере (IIS или Apache) каталог с файлом default.vrd и подключает модуль 1С. После этого база открывается в браузере по адресу вида http://server/buh/ и через тонкий клиент по HTTP.

Выбор веб-сервера простой. На Windows-сервере без опыта с Apache удобнее IIS. На Linux и в смешанной среде — Apache 2.4. Nginx модуля 1С не имеет, его ставят перед Apache или IIS как обратный прокси для HTTPS. Порядок действий одинаков для файловой и клиент-серверной базы, разница только в строке подключения и правах.

HTTP, HTTPS или другой способ доступа к базе 1С

Протокол для веб-публикации

HTTP годится только внутри офисной сети или для первой проверки, что публикация вообще работает. Логин и пароль пользователя 1С по HTTP идут открытым текстом. Наружу в интернет базу по HTTP не выставляют.

ВариантКогда подходитРиски
HTTP в локальной сетиТест, доступ только из офисаПароли видны в трафике сети
HTTP через VPNУдалённые сотрудники уже подключаются по VPNНужно сопровождать VPN, но канал зашифрован
HTTPS на самом IIS/ApacheОдин сервер, есть сертификатСертификат продлевают вручную или скриптом
HTTPS на Nginx перед веб-серверомДоступ из интернета, нужен Let’s Encrypt и защита от перебораЕщё один сервис в цепочке

💡 Сертификат Let’s Encrypt бесплатен и продлевается автоматически. Для него нужно доменное имя, которое указывает на внешний адрес сервера, и открытый порт 80 на время проверки.

Если веб-публикация не подходит

Веб-публикация — не единственный способ удалённой работы. Если она не подходит, сравните альтернативы:

СпособКогда выбираютОграничения
Веб-публикация + тонкий клиент по HTTPМного удалённых пользователей, нужен доступ без VPNНужен веб-сервер и его защита
RDP или RemoteAppНужны внешние обработки, сканеры, локальная печать в привычном видеЛицензии на терминальный доступ Windows, нагрузка на сервер
VPN + обычное подключениеОфисы связаны постоянным каналомФайловая база по VPN работает медленно
Облако 1С:Фреш или аренда у партнёраНет своего сервера и администратораЕжемесячная плата, доработки ограничены

💡 При публикации через RemoteApp публикуют не конкретную конфигурацию, а 1cestart.exe. Тогда пользователь видит привычный список баз и запускает нужную.

Подготовка сервера к веб-публикации 1С

Публикация требует трёх вещей: установленного веб-сервера, модуля расширения 1С и прав на запись в каталог публикации.

Компоненты платформы

При установке платформы 1С на машину с веб-сервером отметьте компонент Модули расширения веб-сервера. Без него в каталоге bin не будет файлов wsisapi.dll (для IIS) и wsap24.dll (для Apache 2.4).

Если платформа уже стоит, запустите установщик той же версии и выберите «Изменить» — компонент добавится без переустановки.

Разрядность модуля должна совпадать с разрядностью веб-сервера. 64-битный Apache не загрузит 32-битный wsap24.dll, и наоборот.

IIS на Windows Server

В «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)» и в службах ролей отметьте:

  • 🔧 «Расширения ISAPI» и «Фильтры ISAPI» — через них работает модуль 1С;
  • 🔧 «Консоль управления IIS»;
  • 🔧 «Совместимость управления IIS 6» — Конфигуратор пишет настройки публикации через этот интерфейс.

Apache на Windows или Linux

На Windows возьмите сборку Apache 2.4 нужной разрядности и установите её службой. На Linux достаточно пакета apache2 (Debian, Ubuntu) или httpd (RHEL-подобные).

Где лежит база

  • 📁 Файловая база: учётной записи веб-сервера нужны права на изменение каталога базы. Для IIS это пользователь пула приложений (группа IIS_IUSRS), для Apache на Windows — учётная запись службы.
  • 🖥️ Клиент-серверная база : веб-сервер должен видеть сервер 1С по сети. Это порт агента 1540, менеджера кластера 1541 и диапазон рабочих процессов (по умолчанию 1560–1591), если брандмауэр между машинами есть.

Как опубликовать базу 1С на IIS или Apache

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

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

Проверка: откройте в браузере http://localhost/buh/. Должно появиться окно входа 1С.

Что Конфигуратор пишет в Apache

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

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.xx.xxxx/bin/wsap24.dll"

# 1c publication
Alias "/buh" "C:/inetpub/wwwroot/buh/"
<Directory "C:/inetpub/wwwroot/buh/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/inetpub/wwwroot/buh/default.vrd"
</Directory>

Путь в LoadModule содержит номер версии платформы. После обновления 1С и удаления старой версии Apache перестанет запускаться. Поправьте путь на новую версию или переопубликуйте базу, затем перезапустите службу.

Публикация утилитой webinst

На Linux Конфигуратора с графикой на сервере обычно нет, поэтому публикуют из консоли:

cd /opt/1cv8/x86_64/8.3.xx.xxxx
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";. На Windows та же утилита лежит в C:\Program Files\1cv8\<версия>\bin\webinst.exe, для IIS вместо -apache24 указывают -iis. Удаляют публикацию ключом -delete с тем же -wsdir.

Что внутри default.vrd

Файл 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=&quot;srv1c&quot;;Ref=&quot;buh&quot;;">
    <ws pointEnableCommon="true"/>
    <httpServices publishByDefault="false"/>
</point>

Атрибут ib — строка подключения к базе, кавычки в ней экранированы как &quot;. Переносите базу на другой сервер 1С — достаточно поправить ib и перезапустить веб-сервер , переопубликовывать не нужно.

Особенности IIS

На IIS Конфигуратор создаёт виртуальный каталог и сопоставление обработчика с wsisapi.dll. Если платформа 32-битная, а сервер 64-битный, откройте дополнительные параметры пула приложений и включите «Разрешены 32-разрядные приложения».

Nginx перед публикацией 1С: HTTPS и обратный прокси

Nginx не умеет работать с базой 1С напрямую. Схема такая: Apache или IIS слушает внутренний порт, например 8080, а Nginx принимает HTTPS на 443 и передаёт запросы дальше.

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 / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_read_timeout 300s;
    }
}

Что здесь важно:

  • 📎 client_max_body_size — без него пользователи не загрузят в базу файлы крупнее 1 МБ (лимит Nginx по умолчанию).
  • ⏱️ proxy_read_timeout — долгие отчёты и проведение партий документов не будут обрываться через 60 секунд.
  • 🔒 Сертификат выпускают командой certbot --nginx -d 1c.example.ru, продление certbot настраивает сам.

💡 Внутренний порт Apache или IIS закройте брандмауэром снаружи. Иначе базу можно открыть в обход Nginx по HTTP.

Как защитить опубликованную базу 1С

Опубликованная база — это окно входа, доступное всему интернету. Его будут пробовать перебором.

  • 🔑 У каждого пользователя 1С должен быть пароль. Пользователь без пароля в опубликованной базе — открытая дверь.
  • 🚫 Снимите флажки OData, веб-сервисов и HTTP-сервисов, если интеграции через веб-сервер нет.
  • 🌐 Ограничьте доступ по IP в Nginx (allow/deny), если сотрудники работают из известных офисов.
  • 🧱 Поставьте fail2ban с правилом на частые ответы 401 от адреса публикации.
  • 🖥️ Аутентификацию операционной системы (ключ -osauth у webinst) включайте только в домене.
  • 📄 Не храните default.vrd и каталог публикации в папке, доступной для записи пользователям.
Перед открытием базы в интернет
Выполнено: 0 / 6

Оптимизация производительности веб-клиента

Через веб-сервер база работает медленнее, чем тонкий клиент в локальной сети. Каждый вызов сервера — это HTTP-запрос. Что реально помогает:

  1. Клиент-серверный вариант вместо файлового. Файловая база через веб-сервер терпима на 3–5 пользователей. Дальше растут блокировки и ожидания.
  2. Тонкий клиент вместо браузера. В окне добавления базы тонкого клиента выберите вариант подключения «На веб-сервере» и укажите адрес публикации. Работает быстрее веб-клиента и не зависит от обновлений браузера.
  3. Переработка пула IIS в нерабочее время. По умолчанию IIS перезапускает пул каждые 1740 минут (29 часов) и после 20 минут простоя. Перезапуск обрывает сеансы. Задайте переработку по расписанию, например на 3:00, и увеличьте тайм-аут простоя.
  4. Сжатие в Nginx. Включите gzip для текстовых ответов. Канал до удалённого офиса часто узкий, и сжатие заметно ускоряет первую загрузку веб-клиента.
  5. Веб-сервер рядом с сервером 1С. Задержка между ними умножается на число серверных вызовов каждой формы.

Автоматизация публикации и мониторинг

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

@echo off
set V=8.3.xx.xxxx
"C:\Program Files\1cv8\%V%\bin\webinst.exe" -publish -apache24 -wsdir buh ^
  -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;" ^
  -confpath "C:\Apache24\conf\httpd.conf"
net stop Apache2.4 && net start Apache2.4

Перезапуск Apache или пула IIS обрывает сеансы всех, кто работает через веб. Запускайте скрипт после рабочего дня или предупредите пользователей.

Простая проверка доступности — запрос к адресу публикации раз в 5 минут из cron:

#!/bin/sh
code=$(curl -s -o /dev/null -w "%{http_code}" https://1c.example.ru/buh/)
[ "$code" = "200" ] || echo "Публикация 1С ответила $code" | mail -s "1C web down" admin@example.ru

Код 200 значит, что модуль 1С загружен и отдал страницу входа. Код 500 обычно указывает на модуль или права, 404 — на неверный адрес публикации. HTTP-сервисы проверяют отдельно по адресу вида /buh/hs/<корневой URL сервиса>/.

Ошибки веб-публикации 1С и их решение

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

Если ни один пункт не подошёл, посмотрите журнал веб-сервера: error.log у Apache и журналы в C:\inetpub\logs\LogFiles у IIS. Текст ошибки из журнала обычно точнее, чем сообщение в браузере.

Частые вопросы о веб-публикации

Можно ли опубликовать несколько баз на одном веб-сервере?
Да. Каждая база публикуется под своим именем: /buh, /zup, /ut. Модуль 1С загружается один раз, публикации живут в отдельных каталогах.
Нужна ли отдельная лицензия на веб-сервер?
Отдельной лицензии на сам веб-сервер не требуется. Лицензию занимает каждый пользователь, который вошёл в базу через браузер или тонкий клиент.
Как поменять адрес публикации?
Удалите старую публикацию и создайте новую с другим именем. Пользователям тонкого клиента придётся поправить адрес в списке баз.