Как поставить и подключить модули веб-сервера 1С к Apache, IIS и NGINX

· 10 мин

Содержание

Модули расширения веб-сервера ставятся вместе с платформой 1С: в установщике отмечают компонент «Модули расширения веб-сервера», а на Linux добавляют компонент ws. После этого модуль подключают к Apache 2.4 строкой LoadModule или к IIS через сопоставление обработчиков, публикуют базу — и она открывается в браузере.

Типичная ситуация: бухгалтер уходит на удалёнку, а RDP-доступ давать не хотят. Администратор решает открыть базу через веб-клиент. Платформа на сервере есть, Apache стоит, но базы по адресу нет — потому что модуль расширения веб-сервера не установлен или не подключён. Ниже — полный путь от установки модуля до проверки, для Windows и Linux.

Что это за модули расширения и откуда их брать

Модуль расширения — это библиотека, которую загружает веб-сервер. Она принимает HTTP-запросы веб-клиента, тонкого клиента по HTTP, веб-сервисов и HTTP-сервисов и передаёт их в информационную базу. Отдельно модули не продаются и не скачиваются: они входят в дистрибутив технологической платформы.

Веб-серверФайл модуля на WindowsФайл модуля на Linux
Apache 2.4wsap24.dllwsap24.so
Apache 2.2 (устаревший)wsap22.dllwsap22.so
IISwsisapi.dll—
NGINXмодуля нетмодуля нет

Где лежат файлы после установки:

  • 🪟 Windows: C:\Program Files\1cv8\8.3.xx.xxxx\bin\
  • 🐧 Linux, платформа 8.3.20 и новее: /opt/1cv8/x86_64/8.3.xx.xxxx/
  • 🐧 Linux, более ранние сборки: /opt/1C/v8.3/x86_64/

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

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

Подготовка сервера к установке модулей

До установки проверьте пять вещей. Так вы не будете переделывать конфигурацию по второму кругу.

  1. Версия платформы. Узнайте точный номер сборки на сервере 1С. В клиент-серверном варианте модуль ставят той же сборки, что и кластер.
  2. Разрядность. Определитесь, будет ли веб-сервер 64-битным. Для новых установок выбирайте 64 бита везде.
  3. Сам веб-сервер. Apache 2.4 или IIS уже установлен и отдаёт стартовую страницу по http://localhost.
  4. Сетевой доступ. Веб-сервер должен достучаться до агента сервера 1С (порт 1540), менеджера кластера (1541) и диапазона рабочих процессов, заданного в свойствах рабочего сервера (по умолчанию 1560–1591).
  5. Права. Для файловой базы учётная запись веб-сервера (www-data, apache, IIS_IUSRS) должна иметь чтение и запись в каталог базы.

Публиковать файловую базу через веб можно, но для 3–5 пользователей это уже медленно. Для постоянной работы через браузер берите клиент-серверный вариант.

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

Установка модуля расширения для Apache 2.4

Windows

  1. Запустите setup.exe из дистрибутива платформы (подойдёт и полный дистрибутив, и дистрибутив сервера).
  2. В списке компонентов включите «Модули расширения веб-сервера». Если платформа уже стоит, запустите установщик ещё раз и выберите изменение состава компонентов.
  3. Убедитесь, что в папке bin появился wsap24.dll.

Apache для Windows обычно берут в сборке Apache Lounge. Его ставят службой командой из каталога bin:

httpd.exe -k install
httpd.exe -k start

Строку LoadModule добавлять вручную не обязательно: её допишет публикация из конфигуратора (о ней ниже). Если правите httpd.conf сами, путь берите в кавычки — в нём есть пробел:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1467/bin/wsap24.dll"

Debian и Ubuntu

Начиная с 8.3.20 платформа для Linux поставляется единым установщиком setup-full-…-x86_64.run. Модули веб-сервера — компонент ws:

sudo apt install apache2
sudo ./setup-full-8.3.24.1467-x86_64.run --mode unattended --enable-components server,ws

Если на машине нужен только веб-сервер без сервера 1С, оставьте --enable-components ws. Для старых сборок ставят пакеты 1c-enterprise83-common и 1c-enterprise83-ws той же версии через dpkg -i.

Основной конфиг Apache — /etc/apache2/apache2.conf. Именно его указывают при публикации.

CentOS, RHEL и совместимые (AlmaLinux, Rocky, РЕД ОС)

sudo dnf install httpd
sudo ./setup-full-8.3.24.1467-x86_64.run --mode unattended --enable-components ws
sudo systemctl enable --now httpd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

Отличия от Debian:

  • 📁 конфиг лежит в /etc/httpd/conf/httpd.conf;
  • 👤 Apache работает от пользователя apache, а не www-data;
  • 🛡️ включён SELinux. По умолчанию он не даёт httpd открывать исходящие соединения, и модуль не достучится до кластера 1С. Разрешите это:
sudo setsebool -P httpd_can_network_connect on

Если после этого Apache не грузит модуль, посмотрите отказы SELinux в /var/log/audit/audit.log. Отключать SELinux целиком ради 1С не нужно.

Подключение модуля к IIS на Windows Server

IIS на Windows Server 2016 и новее ставится через «Диспетчер серверов» → «Добавить роли и компоненты» → роль «Веб-сервер (IIS)». В составе роли, в группе «Разработка приложений», включите:

  • ✅ «Расширения ISAPI»;
  • ✅ «Фильтры ISAPI».

Без них wsisapi.dll просто не подключится, а публикация из конфигуратора завершится ошибкой.

Дальше поставьте платформу с компонентом «Модули расширения веб-сервера» — так же, как для Apache. Публикация из конфигуратора сама создаст приложение в IIS и сопоставление обработчика на wsisapi.dll.

Что проверить в «Диспетчере служб IIS» после публикации:

  1. Пул приложений. Если платформа 64-битная, параметр «Разрешить 32-разрядные приложения» должен быть False. Для 32-битной платформы — True.
  2. Сопоставление обработчиков. У приложения базы есть обработчик с модулем IsapiModule, путь *, исполняемый файл — wsisapi.dll нужной версии.
  3. Ограничения ISAPI и CGI на уровне сервера: wsisapi.dll должен быть разрешён.
  4. Права. Группе IIS_IUSRS нужно чтение на каталог публикации и каталог bin платформы. Для файловой базы — ещё и изменение в каталоге базы.

После обновления платформы путь к wsisapi.dll меняется, потому что в нём есть номер сборки. Перепубликуйте базу или поправьте путь в сопоставлении обработчиков вручную.

NGINX и 1С: работа в связке с Apache

Модуля расширения 1С для NGINX нет. Подключить базу напрямую к NGINX нельзя, поэтому схема всегда такая: NGINX стоит снаружи и принимает HTTPS, а запросы проксирует на Apache или IIS с модулем 1С.

Зачем такая связка:

  • 🔒 TLS-сертификаты (в том числе Let’s Encrypt) удобнее держать на NGINX;
  • 🚀 NGINX сам отдаёт статику и держит множество соединений;
  • 🧱 Apache с модулем 1С слушает только локальный адрес и не торчит в интернет.

Переведите Apache на внутренний порт: в /etc/apache2/ports.conf замените Listen 80 на Listen 127.0.0.1:8080. Затем блок сервера NGINX:

server {
    listen 443 ssl;
    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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

client_max_body_size нужен для загрузки файлов в базу: по умолчанию NGINX режет тело запроса на 1 МБ. Большие proxy_read_timeout спасают длительные операции — закрытие месяца или формирование тяжёлого отчёта, — которые иначе обрываются с ошибкой 504.

Публикация базы 1С на веб-сервере

Модуль сам по себе ничего не открывает. Нужна публикация: каталог с файлом default.vrd и блок в конфиге веб-сервера.

Через конфигуратор (Windows, IIS или Apache)

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

Через webinst (Linux и сценарии)

Утилита webinst лежит в том же каталоге, что и модули. Публикация серверной базы в Apache 2.4 на Ubuntu:

sudo mkdir -p /var/www/buh
cd /opt/1cv8/x86_64/8.3.24.1467
sudo ./webinst -publish -apache24 -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2

Для IIS в Windows вместо -apache24 указывают -iis и каталог вида C:\inetpub\wwwroot\buh. Для файловой базы строка подключения выглядит как File="D:\Bases\buh";.

В итоге в конфиге Apache появится такой блок — полезно знать его, чтобы чинить руками:

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.24.1467/wsap24.so"

Alias "/buh" "/var/www/buh/"
<Directory "/var/www/buh/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/buh/default.vrd"
</Directory>

Строка LoadModule _1cws_module должна быть в конфиге одна. При публикации второй и третьей базы её не дублируют — добавляются только блоки Alias и Directory.

База будет доступна по адресу http://сервер/buh/.

Проверка конфигурации и разбор ошибок

Тест конфигурации Apache

Перед каждым перезапуском проверяйте синтаксис:

sudo apachectl configtest     # Debian/Ubuntu: можно apache2ctl -t
sudo apachectl -M | grep 1cws # модуль загружен?

Ответ Syntax OK и строка _1cws_module (shared) во втором выводе — значит, модуль подключён. На Windows то же самое делает httpd.exe -t из каталога bin Apache.

Если модуль не грузится, проверьте зависимости библиотеки:

ldd /opt/1cv8/x86_64/8.3.24.1467/wsap24.so | grep "not found"

Тест конфигурации NGINX

sudo nginx -t
sudo systemctl reload nginx

reload, в отличие от restart, не обрывает текущие соединения. Для 1С это важно: у пользователей веб-клиента не слетят открытые сеансы.

Перезапуск Apache или IIS (restart, iisreset) завершает сеансы всех, кто сейчас работает в базе через браузер. Делайте это в нерабочее время или предупредите пользователей.

Частые симптомы

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

Логи ищите здесь: /var/log/apache2/error.log (Debian/Ubuntu), /var/log/httpd/error_log (RHEL), журнал событий Windows и каталог logs Apache — на Windows.

Как ускорить работу 1С через браузер

Основные тормоза веб-доступа — не сам модуль, а сеть, сжатие и схема работы базы.

МераЧто даётНа что смотреть
Клиент-серверная база вместо файловойНет конкурентного доступа веб-сервера к файлу базыДля 5+ пользователей обязательно
Веб-сервер рядом с сервером 1СМеньше задержки между модулем и кластеромОдна площадка или одна локальная сеть
HTTPS и HTTP/2 на NGINXМеньше рукопожатий, параллельные запросыСертификат продлевается автоматически
Сжатие и кеш статикиБыстрее первая загрузка веб-клиентаНе сжимайте повторно то, что уже сжато
Тонкий клиент по HTTP вместо браузераМеньше нагрузка на браузер, привычный интерфейсТот же адрес публикации

Ещё несколько практических приёмов:

  • 🧹 Не публикуйте лишнего. Веб-сервисы, HTTP-сервисы и OData включайте только там, где ими реально пользуются.
  • 🔁 После каждого обновления платформы обновляйте модуль и путь в LoadModule. Старый модуль на новом кластере — гарантированная ошибка версий.
  • 📊 Если веб-клиент тормозит у всех сразу, сравните скорость тонкого клиента внутри сети. Медленно и там — проблема в базе или сервере 1С, а не в веб-сервере.
Проверка после установки модуля
Выполнено: 0 / 6

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

Можно ли поставить модули веб-сервера на отдельную машину без сервера 1С?
Да. На Linux ставят только компонент ws, на Windows — только «Модули расширения веб-сервера». Важно, чтобы версия совпадала с версией кластера и были открыты порты до сервера 1С.
Нужна ли отдельная лицензия на модуль расширения веб-сервера?
Нет. Модуль входит в платформу. Лицензии нужны пользователям: каждый сеанс веб-клиента занимает клиентскую лицензию.
Можно ли опубликовать несколько баз на одном Apache?
Да. Для каждой базы — свой каталог с default.vrd и свой блок Alias/Directory. Строка LoadModule в конфиге остаётся одна.
Работает ли 1С с NGINX без Apache или IIS?
Нет. Модуля 1С для NGINX нет, он работает только как обратный прокси перед Apache или IIS.
Что делать с публикацией после обновления платформы?
Установить модуль новой версии и перепубликовать базу или вручную заменить номер сборки в пути LoadModule (для IIS — в сопоставлении обработчиков). Затем перезапустить веб-сервер в нерабочее время.