Публикация 1С 8.3 в браузере: на чём её держать и как настроить
Содержание
Для 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.4 | wsap24.dll | wsap24.so |
| Apache 2.2 | wsapch2.dll | wsapch2.so |
| IIS | wsisapi.dll | — |
| Nginx | нет | нет |
Apache 2.2 давно не получает обновлений безопасности, ставить его на новый сервер нет смысла. Берите 2.4.
Есть ещё автономный сервер 1С (ibsrv, появился в платформе 8.3.14). Он сам отвечает по HTTP без Apache и IIS. Это удобно для теста и небольших файловых баз, но в рабочих публикациях его обычно тоже прячут за Nginx.
Сравнение Apache, IIS и Nginx для публикации 1С
| Критерий | Apache 2.4 | IIS | Nginx |
|---|---|---|---|
| Публикует базу 1С сам | ✅ да | ✅ да | ❌ только прокси |
| ОС | Windows, Linux | Windows Server, Windows 10/11 | любые |
| Сложность первой настройки | низкая: один httpd.conf | средняя: роли, пулы, обработчики | средняя: конфиг прокси |
| Вход по учётке Windows (Kerberos/NTLM) | возможен, но сложнее | встроен | передаёт дальше, сам не проверяет |
| HTTPS | mod_ssl, сертификат в файлах | привязка сертификата в оснастке | удобнее всех, плюс Let’s Encrypt |
| Перенос на другой сервер | скопировать каталог и конфиг | выгружать настройки сайта | скопировать конфиг |
| Нагрузка на память | умеренная | умеренная | минимальная |
| Где споткнуться | разрядность, LoadModule после обновления платформы | права IIS_IUSRS, 32-битный режим пула | таймауты и размер тела запроса |
Скорость самой 1С от выбора Apache или IIS почти не зависит. Основную работу делает сервер 1С и СУБД, а веб-сервер передаёт запросы модулю. Разница проявляется в удобстве администрирования, безопасности и в том, как сервер держит много одновременных соединений.
Какой веб-сервер подойдёт под ваш случай
wsap24.so. Для доступа из интернета — Nginx спереди с сертификатом Let’s Encrypt.Отдельно про обмены и HTTP-сервисы. Если базу публикуют только ради обмена с сайтом, маркетплейсом или мобильным приложением, тип веб-сервера неважен. Важнее закрыть всё лишнее: публиковать только нужные сервисы и не выставлять наружу веб-клиент.
Как опубликовать базу на веб-сервере: пошагово
Шаг 1. Подготовка
- Установите платформу с компонентом «Модули расширения веб-сервера» той же разрядности, что и веб-сервер.
- Установите Apache 2.4 или включите роль IIS.
- Создайте каталог публикации, например
C:\inetpub\wwwroot\buh. В нём появится файлdefault.vrd— описание публикации.
Шаг 2. Публикация на Apache через Конфигуратор
- Запустите Конфигуратор от имени администратора — иначе он не сможет записать
httpd.conf. - Откройте
Администрирование → Публикация на веб-сервере. - Укажите имя (оно станет частью адреса:
http://server/buh), веб-сервер «Apache 2.4» и каталог. - Отметьте, что публиковать: тонкий и веб-клиент, нужные веб- и HTTP-сервисы.
- Нажмите «Опубликовать» и перезапустите службу 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
- В диспетчере сервера добавьте роль «Веб-сервер (IIS)» и в разделе разработки приложений компоненты «Расширения ISAPI» и «Фильтры ISAPI».
- Опубликуйте базу из Конфигуратора, выбрав веб-сервер IIS. В сайте появится приложение с обработчиком на
wsisapi.dll. - Дайте группе
IIS_IUSRSправа на чтение к каталогуbinплатформы и на чтение-запись к каталогу публикации. - Проверьте пул приложений: для 64-битного модуля параметр «Разрешить 32-разрядные приложения» должен быть выключен, для 32-битного — включён.
- Для входа по учётке 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 снимает публикацию. Полный список ключей выводит сама утилита при запуске без параметров.
Как ускорить и укрепить 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С или в одной быстрой сети с ним. Модуль много общается с рабочими процессами, и каждая лишняя миллисекунда задержки умножается на сотни вызовов.
- Тонкий клиент вместо браузера. Тонкий клиент по HTTP кеширует метаданные у себя, а браузер чаще загружает их заново. Для ежедневной работы бухгалтера он заметно отзывчивее.
- HTTPS с HTTP/2 на Nginx. Несколько запросов идут по одному соединению, рукопожатие TLS делается реже.
- Сам сервер 1С и СУБД. Если долго проводится документ и в толстом клиенте, веб-сервер ни при чём — ищите узкое место в запросах, блокировках и дисках.
- Файловая база. Через веб-сервер она работает, но при 5–10 одновременных пользователях упирается в блокировки файла. Для удалённой работы команды переходите на клиент-серверный вариант.
Быстрая проверка, виноват ли веб-сервер: откройте ту же базу тонким клиентом напрямую к кластеру (Srvr=...;Ref=...). Если там быстро, а через публикацию медленно — разбирайтесь с веб-сервером и сетью. Если медленно везде — проблема глубже.
Ошибки при публикации 1С на веб-сервере и как их убрать
LoadModule.LoadModule остался путь к каталогу старой версии, которую удалили. Замените номер версии в пути на актуальный или переопубликуйте базу из Конфигуратора новой версии.Listen 8080.IIS_IUSRS на каталог bin платформы или каталог публикации, либо в пуле включён 32-разрядный режим при 64-битном модуле. Проверьте оба пункта и перезапустите пул.proxy_read_timeout и proxy_send_timeout.После любого исправления смотрите журнал ошибок веб-сервера: у Apache это logs\error.log в каталоге установки, у IIS — журнал событий Windows и логи сайта. Текст ошибки там почти всегда точнее, чем сообщение в браузере.
Можно ли опубликовать 1С на Nginx без Apache и IIS?
ibsrv.Нужны ли отдельные лицензии для работы через веб-сервер?
Можно ли поставить веб-сервер на другой компьютер, не на сервер 1С?
Сколько публикаций выдержит один Apache?
ThreadsPerChild под суммарное число пользователей.