Как открыть базу 1С через браузер: публикация на IIS и Apache, HTTPS через Nginx
Содержание
Базу 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
Через Конфигуратор
- Запустите Конфигуратор от имени администратора Windows. Без этого публикация упадёт на записи в
httpd.confили в настройки IIS. - Откройте базу и выберите
Администрирование → Публикация на веб-сервере. - Задайте имя публикации латиницей, например
buh. Оно станет частью адреса. - Выберите веб-сервер из списка (IIS или Apache нужной версии) и каталог, например
C:\inetpub\wwwroot\buh. - Оставьте флажок публикации тонкого клиента и веб-клиента. Веб-сервисы, HTTP-сервисы и OData включайте только те, что реально используются.
- Нажмите «Опубликовать». Для 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="srv1c";Ref="buh";">
<ws pointEnableCommon="true"/>
<httpServices publishByDefault="false"/>
</point>
Атрибут ib — строка подключения к базе, кавычки в ней экранированы как ". Переносите базу на другой сервер 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и каталог публикации в папке, доступной для записи пользователям.
Оптимизация производительности веб-клиента
Через веб-сервер база работает медленнее, чем тонкий клиент в локальной сети. Каждый вызов сервера — это HTTP-запрос. Что реально помогает:
- Клиент-серверный вариант вместо файлового. Файловая база через веб-сервер терпима на 3–5 пользователей. Дальше растут блокировки и ожидания.
- Тонкий клиент вместо браузера. В окне добавления базы тонкого клиента выберите вариант подключения «На веб-сервере» и укажите адрес публикации. Работает быстрее веб-клиента и не зависит от обновлений браузера.
- Переработка пула IIS в нерабочее время. По умолчанию IIS перезапускает пул каждые 1740 минут (29 часов) и после 20 минут простоя. Перезапуск обрывает сеансы. Задайте переработку по расписанию, например на 3:00, и увеличьте тайм-аут простоя.
- Сжатие в Nginx. Включите
gzipдля текстовых ответов. Канал до удалённого офиса часто узкий, и сжатие заметно ускоряет первую загрузку веб-клиента. - Веб-сервер рядом с сервером 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С загружается один раз, публикации живут в отдельных каталогах.