Публикация 1С 8.3 в браузере: на чём её держать и как настроить

· 10 мин

Содержание

Для 1С 8.3 веб-сервер выбирают из двух вариантов, которые платформа поддерживает напрямую: Apache 2.4 (Windows и Linux) и IIS (только Windows). Nginx публиковать базу сам не умеет: у 1С нет для него модуля, поэтому его ставят перед Apache или IIS как обратный прокси — для HTTPS, сжатия и балансировки.

Короткое правило выбора. Сервер на Linux — Apache, без вариантов. Windows и маленькая команда — Apache, он проще в настройке и переносе. Windows-инфраструктура с доменом и входом по учётке Windows — IIS. База открыта в интернет — добавьте Nginx спереди, какой бы сервер ни стоял за ним.

Что нужно 1С от веб-сервера

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

Из этого вытекают требования:

  • 🧩 Компонент установлен. При установке платформы отметьте «Модули расширения веб-сервера». Без него пункт публикации в Конфигураторе есть, а публиковать нечем.
  • 📐 Разрядность совпадает. 64-битный Apache грузит только 64-битный модуль, 32-битный — только 32-битный. Это самая частая причина, почему Apache не стартует после публикации.
  • 🔢 Версия модуля = версия платформы сервера. Для клиент-серверной базы модуль должен быть той же версии, что и сервер 1С. Обновили кластер — переключите и веб-сервер.
  • 🔐 Права учётной записи. Служба веб-сервера работает от своей учётки. Ей нужен доступ к каталогу публикации, к каталогу платформы, а для файловой базы — на чтение и запись к папке с базой.

Какие файлы модулей лежат в bin платформы:

Веб-серверМодуль WindowsМодуль Linux
Apache 2.4wsap24.dllwsap24.so
Apache 2.2wsapch2.dllwsapch2.so
IISwsisapi.dll—
Nginxнетнет

Apache 2.2 давно не получает обновлений безопасности, ставить его на новый сервер нет смысла. Берите 2.4.

Есть ещё автономный сервер 1С (ibsrv, появился в платформе 8.3.14). Он сам отвечает по HTTP без Apache и IIS. Это удобно для теста и небольших файловых баз, но в рабочих публикациях его обычно тоже прячут за Nginx.

Сравнение Apache, IIS и Nginx для публикации 1С

КритерийApache 2.4IISNginx
Публикует базу 1С сам✅ да✅ да❌ только прокси
ОСWindows, LinuxWindows Server, Windows 10/11любые
Сложность первой настройкинизкая: один httpd.confсредняя: роли, пулы, обработчикисредняя: конфиг прокси
Вход по учётке Windows (Kerberos/NTLM)возможен, но сложнеевстроенпередаёт дальше, сам не проверяет
HTTPSmod_ssl, сертификат в файлахпривязка сертификата в оснасткеудобнее всех, плюс Let’s Encrypt
Перенос на другой серверскопировать каталог и конфигвыгружать настройки сайтаскопировать конфиг
Нагрузка на памятьумереннаяумереннаяминимальная
Где споткнутьсяразрядность, LoadModule после обновления платформыправа IIS_IUSRS, 32-битный режим пулатаймауты и размер тела запроса

Скорость самой 1С от выбора Apache или IIS почти не зависит. Основную работу делает сервер 1С и СУБД, а веб-сервер передаёт запросы модулю. Разница проявляется в удобстве администрирования, безопасности и в том, как сервер держит много одновременных соединений.

Какой веб-сервер подойдёт под ваш случай

Где и зачем публикуется база 1С?

Отдельно про обмены и HTTP-сервисы. Если базу публикуют только ради обмена с сайтом, маркетплейсом или мобильным приложением, тип веб-сервера неважен. Важнее закрыть всё лишнее: публиковать только нужные сервисы и не выставлять наружу веб-клиент.

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

Шаг 1. Подготовка

  1. Установите платформу с компонентом «Модули расширения веб-сервера» той же разрядности, что и веб-сервер.
  2. Установите Apache 2.4 или включите роль IIS.
  3. Создайте каталог публикации, например C:\inetpub\wwwroot\buh. В нём появится файл default.vrd — описание публикации.

Шаг 2. Публикация на Apache через Конфигуратор

  1. Запустите Конфигуратор от имени администратора — иначе он не сможет записать httpd.conf.
  2. Откройте Администрирование → Публикация на веб-сервере.
  3. Укажите имя (оно станет частью адреса: http://server/buh), веб-сервер «Apache 2.4» и каталог.
  4. Отметьте, что публиковать: тонкий и веб-клиент, нужные веб- и HTTP-сервисы.
  5. Нажмите «Опубликовать» и перезапустите службу Apache.

Конфигуратор допишет в httpd.conf примерно такой блок:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/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>

Номер версии в пути — ваш, не копируйте его из примера.

Шаг 3. Публикация на IIS

  1. В диспетчере сервера добавьте роль «Веб-сервер (IIS)» и в разделе разработки приложений компоненты «Расширения ISAPI» и «Фильтры ISAPI».
  2. Опубликуйте базу из Конфигуратора, выбрав веб-сервер IIS. В сайте появится приложение с обработчиком на wsisapi.dll.
  3. Дайте группе IIS_IUSRS права на чтение к каталогу bin платформы и на чтение-запись к каталогу публикации.
  4. Проверьте пул приложений: для 64-битного модуля параметр «Разрешить 32-разрядные приложения» должен быть выключен, для 32-битного — включён.
  5. Для входа по учётке Windows включите в сайте проверку подлинности Windows и отключите анонимную.

Шаг 4. Публикация из командной строки

На сервере без графического Конфигуратора, в Linux и в скриптах развёртывания используют утилиту webinst из каталога платформы:

sudo /opt/1cv8/x86_64/8.3.25.1374/webinst -publish -apache24 \
  -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv1c;Ref=buh;" \
  -confPath /etc/apache2/apache2.conf

Ключ -delete вместо -publish снимает публикацию. Полный список ключей выводит сама утилита при запуске без параметров.

Проверка после публикации
Выполнено: 0 / 6

Как ускорить и укрепить Apache для 1С

Стандартный конфиг Apache рассчитан на сайт, а не на десятки пользователей 1С с долгими соединениями. Три настройки дают заметный эффект.

Число потоков. На Windows Apache работает с модулем mpm_winnt, и по умолчанию у него 64 потока. Каждый открытый веб-клиент держит соединения, поэтому при 30–40 пользователях потоков начинает не хватать: страницы «висят», хотя сервер 1С свободен.

<IfModule mpm_winnt_module>
    ThreadsPerChild 250
    MaxConnectionsPerChild 0
</IfModule>

На Linux ставьте mpm_event и поднимайте MaxRequestWorkers под число пользователей с запасом.

Сжатие. Включите mod_deflate для текстовых ответов: веб-клиент получает много скриптов и описаний форм.

LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/css application/javascript application/json text/xml

Лишнее — выключить. Уберите из httpd.conf модули, которые не нужны (CGI, автоиндекс каталогов), и не показывайте версию сервера: ServerTokens Prod, ServerSignature Off.

Перезапуск службы Apache или IIS обрывает сеансы веб-клиента и тонкого клиента по HTTP. Пользователям придётся войти заново, а несохранённые формы пропадут. Меняйте конфиг вне рабочего времени или предупредите людей.

Nginx перед 1С: настройка обратного прокси

Схема такая: Nginx слушает 443 порт с сертификатом, Apache или IIS — внутренний адрес вроде 127.0.0.1:8080. Наружу открыт только Nginx.

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 200m;

    location /buh/ {
        proxy_pass http://127.0.0.1:8080/buh/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
        proxy_buffering off;
    }
}

server {
    listen 80;
    server_name 1c.example.ru;
    return 301 https://$host$request_uri;
}

Что здесь важно для 1С:

  • ⏱ Таймауты. Долгий отчёт или закрытие месяца в веб-клиенте идут минутами. Стандартные 60 секунд Nginx оборвут запрос с ошибкой 504, хотя 1С продолжит считать.
  • 📦 client_max_body_size. По умолчанию — 1 МБ. Загрузка файла, вложения ЭДО или прайса больше этого размера упадёт с ошибкой 413.
  • 🔁 proxy_buffering off. Ответы модуля уходят клиенту сразу, без накопления в буфере, что уменьшает задержки интерфейса.
  • 🌍 Ограничение служебных адресов. Публикации только для обменов закройте директивой allow/deny по IP контрагента.

При балансировке на несколько узлов добавьте в upstream привязку клиента к одному серверу, например ip_hash. Иначе запросы одного сеанса будут уходить на разные веб-серверы.

Что ещё ускоряет работу 1С через веб

Веб-сервер — последнее звено. Если клиент тормозит, проверяйте по порядку:

  1. Где стоит веб-сервер. Лучше всего — на одной машине с кластером 1С или в одной быстрой сети с ним. Модуль много общается с рабочими процессами, и каждая лишняя миллисекунда задержки умножается на сотни вызовов.
  2. Тонкий клиент вместо браузера. Тонкий клиент по HTTP кеширует метаданные у себя, а браузер чаще загружает их заново. Для ежедневной работы бухгалтера он заметно отзывчивее.
  3. HTTPS с HTTP/2 на Nginx. Несколько запросов идут по одному соединению, рукопожатие TLS делается реже.
  4. Сам сервер 1С и СУБД. Если долго проводится документ и в толстом клиенте, веб-сервер ни при чём — ищите узкое место в запросах, блокировках и дисках.
  5. Файловая база. Через веб-сервер она работает, но при 5–10 одновременных пользователях упирается в блокировки файла. Для удалённой работы команды переходите на клиент-серверный вариант.

Быстрая проверка, виноват ли веб-сервер: откройте ту же базу тонким клиентом напрямую к кластеру (Srvr=...;Ref=...). Если там быстро, а через публикацию медленно — разбирайтесь с веб-сервером и сетью. Если медленно везде — проблема глубже.

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

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

После любого исправления смотрите журнал ошибок веб-сервера: у Apache это logs\error.log в каталоге установки, у IIS — журнал событий Windows и логи сайта. Текст ошибки там почти всегда точнее, чем сообщение в браузере.

Можно ли опубликовать 1С на Nginx без Apache и IIS?
Напрямую нет: модуля для Nginx у 1С нет. Nginx проксирует запросы на Apache, IIS или автономный сервер ibsrv.
Нужны ли отдельные лицензии для работы через веб-сервер?
Отдельной лицензии на веб-сервер нет. Пользователи веб-клиента и тонкого клиента по HTTP занимают клиентские лицензии так же, как при обычном подключении.
Можно ли поставить веб-сервер на другой компьютер, не на сервер 1С?
Можно, если на нём стоит платформа с модулями веб-сервера той же версии, что кластер, и есть сетевой доступ к портам кластера. Но лучше держать их рядом: так меньше задержек.
Сколько публикаций выдержит один Apache?
Ограничение не в числе публикаций, а в потоках и памяти. Десяток баз на одном Apache — обычная практика, если поднять ThreadsPerChild под суммарное число пользователей.