Публикация 1С через Apache, IIS и Nginx: от выбора сервера до защиты базы
Содержание
Веб-сервер 1С — это обычный Apache или IIS, к которому подключён модуль расширения платформы 1С:Предприятие. Он принимает HTTP-запросы и передаёт их информационной базе. Нужен он, чтобы работать с базой через браузер (веб-клиент), подключать тонкий клиент по интернету и давать доступ к HTTP-сервисам, веб-сервисам и OData.
Отдельной «программы веб-сервер 1С» нет. Платформа ставит только модуль (wsap24.dll для Apache 2.4, wsisapi.dll для IIS), а утилита публикации прописывает его в настройки веб-сервера и создаёт файл default.vrd с описанием базы.
Веб-сервер для 1С: как он работает и когда без него не обойтись
Схема простая. Пользователь открывает адрес вида http://server/buh. Веб-сервер видит, что этот каталог опубликован для 1С, и передаёт запрос модулю платформы. Модуль читает default.vrd, находит строку подключения к базе и работает с ней как обычный клиент.
Дальше всё зависит от типа базы:
- 📁 Файловая база. Модуль сам открывает файл
1Cv8.1CD. Процесс веб-сервера должен иметь права на запись в каталог базы. - 🖥 Клиент-серверная база . Модуль подключается к кластеру серверов 1С так же, как тонкий клиент: через агент (порт 1540) и менеджер кластера.
Веб-сервер нужен в таких случаях:
- 🌐 сотрудники работают из дома или филиала, а VPN нет или он неудобен;
- 📱 нужна мобильная работа через браузер или мобильный клиент;
- 🔗 сайт, маркетплейс или мобильное приложение обмениваются данными с 1С через HTTP-сервисы, веб-сервисы или OData;
- ☁️ база стоит в облаке, и клиенты подключаются к ней по HTTPS.
Когда он не нужен: все пользователи сидят в одной локальной сети или работают через удалённый рабочий стол (RDP). Тогда публикация добавит точку входа извне, но пользы не принесёт.
Отдельной лицензии на веб-сервер нет. Каждый пользователь веб-клиента или тонкого клиента через HTTP занимает клиентскую лицензию, как при обычном подключении.
Apache, IIS или Nginx: сравнение веб-серверов для 1С
Модули расширения в поставке платформы есть только для Apache и IIS. Nginx 1С напрямую не обслуживает. Его ставят перед Apache или IIS как обратный прокси: он принимает HTTPS, держит сертификат, ограничивает доступ и передаёт запросы дальше.
| Сервер | ОС | Как подключается к 1С | Когда выбирать |
|---|---|---|---|
| Apache 2.4 | Windows, Linux | модуль wsap24 | универсальный вариант, единственный для Linux |
| IIS | Windows | расширение ISAPI wsisapi.dll | Windows Server, где уже есть IIS и домен |
| Nginx | Windows, Linux | обратный прокси перед Apache/IIS | HTTPS, балансировка, фильтрация по IP |
Коротко по выбору:
- Сервер на Linux — только Apache 2.4 (опционально Nginx перед ним).
- Windows Server в домене — IIS удобен: он встроен в систему, есть доменная аутентификация и графическая настройка.
- Windows без IIS или нужна переносимость настроек — Apache 2.4. Вся публикация лежит в одном текстовом файле
httpd.conf, его легко сохранить и перенести. - База смотрит в интернет — добавьте Nginx перед основным веб-сервером. Сертификат Let’s Encrypt и ограничения удобнее держать в нём.
Что подготовить перед публикацией базы
До запуска утилиты публикации проверьте четыре вещи.
1. Модули расширения веб-сервера установлены. В установщике платформы для Windows это компонент «Модули расширения веб-сервера». По умолчанию он выключен. Если его нет, пункт публикации в Конфигураторе есть, но публикация завершится ошибкой. Доставьте компонент: запустите установщик той же версии и выберите «Изменить».
2. Разрядность совпадает. 64-разрядный Apache работает только с 64-разрядным модулем, 32-разрядный — с 32-разрядным. Для IIS при 32-разрядной платформе в пуле приложений включают параметр «Разрешить 32-разрядные приложения».
3. Веб-сервер стоит и отвечает. Откройте http://localhost на сервере. Должна появиться стартовая страница Apache или IIS.
4. Права выданы. Учётная запись веб-сервера должна читать каталог bin платформы. Для файловой базы нужны права на изменение каталога с базой.
| Веб-сервер | Под какой учётной записью работает |
|---|---|
| IIS | группа IIS_IUSRS (и IUSR для анонимного доступа) |
| Apache на Windows | учётная запись службы Apache, по умолчанию «Локальная система» |
| Apache на Linux | обычно www-data (Debian/Ubuntu) или apache (RHEL-семейство) |
Файловую базу через веб-сервер можно опубликовать, но уже при нескольких одновременных пользователях растут ожидания на блокировках и замедляется работа. Для работы через интернет лучше клиент-серверный вариант.
Как опубликовать базу на веб-сервере 1С: пошагово
Через Конфигуратор (Windows)
- Запустите Конфигуратор от имени администратора. Без этого программа не сможет записать настройки IIS или
httpd.conf. - Откройте базу и выберите
Администрирование → Публикация на веб-сервере. - В поле «Имя» укажите короткое латинское имя без пробелов, например
buh. Оно станет частью адреса. - Выберите веб-сервер: IIS или Apache 2.4. Для Apache укажите путь к
httpd.conf. - Каталог публикации оставьте предложенный или задайте свой, например
C:\inetpub\wwwroot\buh. - Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
- Проверьте адрес
http://имя_сервера/buhв браузере.
Перезапуск веб-сервера обрывает сеансы всех, кто уже работает через него. На рабочем сервере публикуйте вне рабочего времени или предупредите пользователей.
Через утилиту webinst (без Конфигуратора, в том числе на Linux)
Утилита webinst лежит в каталоге bin платформы. Её удобно использовать в скриптах и на серверах без графики.
Публикация клиент-серверной базы на IIS:
"C:\Program Files\1cv8\<версия>\bin\webinst.exe" -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"
Публикация на Apache 2.4 в Linux:
cd /opt/1cv8/x86_64/<версия>
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";. Внутри -connstr кавычки удваиваются: -connstr "File=""D:\Bases\buh"";".
Что появится в настройках Apache
После публикации в httpd.conf добавляется примерно такой блок. Его полезно знать: при проблемах проще поправить руками, чем публиковать заново.
LoadModule _1cws_module "C:/Program Files/1cv8/<версия>/bin/wsap24.dll"
# 1c publication
Alias "/buh" "C:/Apache24/htdocs/buh/"
<Directory "C:/Apache24/htdocs/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Apache24/htdocs/buh/default.vrd"
</Directory>
Строка LoadModule одна на весь файл, даже если опубликовано несколько баз. Блоков Alias и Directory — по одному на каждую базу.
Ошибки при настройке веб-сервера 1С и их исправление
Самая частая проблема возникает после обновления платформы. В LoadModule остаётся путь к старой версии. Если старую версию удалили, Apache не стартует. Если не удалили — веб-клиент выдаёт ошибку о несовпадении версий клиента и сервера. Исправьте номер версии в пути и перезапустите службу.
Ещё две ситуации, которые не видны по тексту ошибки:
- 🔒 Работает с сервера, но не из сети. Брандмауэр Windows закрыт для порта 80 или 443. Откройте порт входящим правилом.
- 🐢 Веб-клиент работает, но медленно грузит формы. Проверьте, включено ли сжатие на веб-сервере и не стоит ли антивирус с проверкой HTTP-трафика на сервере.
Защита опубликованной базы от атак и утечек
Опубликованная в интернет база — открытая дверь в учёт. Боты сканируют адреса вида /buh, /zup, /trade и перебирают пароли. Минимальный набор мер:
- Только HTTPS. Пароли пользователей 1С по HTTP идут открытым текстом. Сертификат Let’s Encrypt бесплатный, ставится на Nginx или Apache.
- Пароли у всех пользователей. Пользователь без пароля в опубликованной базе — то же, что открытая база. Удалите или заблокируйте лишние учётные записи, включая тестовые.
- Публикуйте только нужное. Если база отдаёт сайту только HTTP-сервис, снимите флажок публикации тонкого и веб-клиента. Если OData не используется, не включайте её.
- Неочевидное имя публикации.
buhиzupботы проверяют первыми. Имя вродеacc-7f3kне защитит само по себе, но отсечёт массовое сканирование. - Ограничение по IP. Если пользователи работают из известных офисов, разрешите доступ только с их адресов. В Nginx это
allow/deny. - Отдельная учётная запись службы. Не оставляйте Apache работать от «Локальной системы» на сервере с базами. Создайте пользователя с правами только на нужные каталоги.
Пример заготовки Nginx перед Apache, который слушает порт 8080:
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 /buh/ {
allow 203.0.113.0/24;
deny all;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_read_timeout 600s;
}
}
client_max_body_size нужен, чтобы пользователи могли прикладывать файлы. proxy_read_timeout — чтобы долгие отчёты не обрывались по таймауту прокси.
Публикация не заменяет резервное копирование. Шифровальщики приходят и через открытые веб-публикации, поэтому копии баз должны храниться на отдельном носителе.
Веб-сервер 1С в облаке и на VPS
Развернуть веб-сервер для 1С на арендованном сервере можно двумя способами.
Всё на одной машине. На VPS ставятся сервер 1С, СУБД (PostgreSQL или MS SQL) и Apache. Подходит для 5-20 пользователей. Ориентир по ресурсам: от 4 ядер и 8 ГБ памяти, быстрый SSD-диск. Аренда такой машины в российских дата-центрах стоит примерно 3-6 тыс. руб. в месяц, без учёта лицензий 1С и Windows.
Веб-сервер отдельно. Apache с Nginx стоят на отдельной небольшой машине в демилитаризованной зоне, а сервер 1С и СУБД — во внутренней сети. Наружу открыт только порт 443 веб-сервера. Так делают при 30+ пользователях и требованиях к безопасности.
Что учесть в облаке:
- 🧾 Лицензии. Программные лицензии 1С привязываются к параметрам машины. При смене конфигурации VPS (процессор, память, сетевая карта) лицензия может слететь. Держите пин-коды и данные регистрации под рукой.
- 🌍 Расположение. Персональные данные сотрудников и клиентов граждан РФ должны храниться в базах на территории России (152-ФЗ). Для базы с ЗУП это прямо касается выбора дата-центра.
- 🕓 Задержка. Веб-клиент чувствителен к пингу. Сервер в том же регионе, что и пользователи, ощутимо быстрее.
1С:Fresh и 1С:Link: когда свой веб-сервер не нужен
Держать собственный веб-сервер выгодно, когда есть администратор и своя инфраструктура. Если их нет, у фирмы 1С есть два готовых варианта.
1С:Fresh — облачная технология, на которой работает сервис 1cfresh.com и аренда типовых конфигураций у партнёров. Базу размещает и обслуживает поставщик: веб-сервер, обновления, копии, лицензии — его забота. Вы платите помесячную абонентскую плату и работаете через браузер или тонкий клиент. Ограничение: только типовые конфигурации, доработки допускаются в виде расширений, и не все.
1С:Link — сервис, который даёт доступ к базе, стоящей у вас в офисе, через интернет без белого IP-адреса и без настройки веб-сервера руками. На компьютер с базой ставится программа сервиса, она сама публикует базу и создаёт защищённый канал до серверов 1С:Link. Пользователи получают адрес и подключаются по HTTPS. Подходит небольшим офисам, у которых нет админа и статического адреса.
| Вариант | Где база | Кто обслуживает | Доработки |
|---|---|---|---|
| Свой веб-сервер | у вас или на вашем VPS | ваш администратор | любые |
| 1С:Link | у вас | вы, публикацию — сервис | любые |
| 1С:Fresh | у поставщика | поставщик | ограничены |