Какой веб-сервер публикует базу 1С: IIS или Apache и где его искать

· 9 мин

Содержание

Быстрее всего узнать веб-сервер 1С по заголовку ответа: выполните curl -I http://адрес/имя_базы/ и посмотрите строку Server. Microsoft-IIS/10.0 — база опубликована на IIS, Apache/2.4.xx — на Apache. Если адреса публикации нет, ищите его в списке баз пользователя, а затем на сервере: кто слушает порт 80 или 443, какие службы запущены и где лежит файл default.vrd.

Способ выбирают по доступу. Есть только браузер — смотрят заголовки. Есть доступ к серверу Windows — диспетчер IIS и netstat. Сервер на Linux — конфиги Apache и apachectl -M. Если непонятно даже, на какой машине стоит публикация, начинают со стороны кластера серверов 1С.

Что считать веб-сервером 1С и что выяснить заранее

У 1С:Предприятия нет собственного веб-сервера в составе кластера. Публикацию обслуживает сторонний сервер: IIS на Windows или Apache на Windows и Linux. В него встраивается модуль расширения веб-сервера из комплекта платформы:

  • 🪟 для IIS — wsisapi.dll;
  • 🐧 для Apache 2.4 — wsap24.dll (Windows) или wsap24.so (Linux), для Apache 2.2 — wsap22.

Отдельный случай — автономный сервер ibsrv, появившийся в платформе 8.3.14. Он сам принимает HTTP-запросы, и IIS с Apache ему не нужны.

Перед поиском соберите три вещи:

  1. 🔗 Адрес, по которому пользователи открывают базу (веб-клиент или тонкий клиент через интернет ).
  2. 🖥️ Доступ к машине, на которую указывает этот адрес: RDP или SSH с правами администратора.
  3. 🔢 Номер версии платформы на сервере 1С. Модуль веб-сервера должен быть той же версии.

Адрес публикации у пользователя найти просто. В окне запуска выделите базу и нажмите Изменить: у опубликованной базы тип подключения «На веб-сервере» и строка вида http://srv-web/buh/. Тот же адрес лежит в файле %APPDATA%\1C\1CEStart\ibases.v8i в параметре Connect=ws="…".

Как узнать веб-сервер 1С по заголовкам HTTP-ответа

Этот способ не требует доступа к серверу. Достаточно, чтобы адрес публикации открывался с вашего компьютера.

Через командную строку

В Windows 10 и новее curl уже встроен. Запрос только заголовков:

curl -I http://srv-web/buh/

Пример ответа IIS:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

Пример ответа Apache:

HTTP/1.1 200 OK
Server: Apache/2.4.58 (Ubuntu)
Content-Type: text/html; charset=utf-8

Версия IIS подсказывает и версию Windows: 10.0 отдают Windows Server 2016, 2019, 2022 и 2025. Если публикация на HTTPS с самоподписанным сертификатом, добавьте ключ -k только для этой проверки.

Через браузер

  1. Откройте адрес публикации.
  2. Нажмите F12 и перейдите на вкладку «Сеть» (Network).
  3. Обновите страницу и выберите первый запрос в списке.
  4. В блоке заголовков ответа найдите Server.

Когда заголовок ничего не говорит

Что в ServerЧто это значитЧто делать
nginxперед 1С стоит обратный прокси1С за ним всё равно на IIS или Apache; ищите сервер в конфиге nginx, в директиве proxy_pass
пусто или Apache без версииадминистратор скрыл версию (ServerTokens Prod)это всё же Apache; версию узнайте на сервере
заголовка нет совсемв IIS могли убрать его настройкой removeServerHeaderпроверяйте службы и порты на сервере

Заголовок X-Powered-By: ASP.NET почти всегда означает IIS, даже если строку Server вырезали.

Кто занимает порт 80 или 443: netstat и PID процесса

Если вы уже на сервере, проверьте, какой процесс слушает веб-порт. В Windows:

netstat -ano | findstr ":80 :443"
tasklist /FI "PID eq 4"

В последней колонке netstat стоит PID. Подставьте его в tasklist:

  • ⚙️ PID 4 и процесс System — порт держит драйвер http.sys, а значит IIS. Рабочие процессы IIS видны как w3wp.exe;
  • ⚙️ httpd.exe — Apache для Windows;
  • ⚙️ nginx.exe — прокси, за которым ищите настоящий сервер.

В PowerShell то же самое короче:

Get-NetTCPConnection -LocalPort 80,443 -State Listen |
  Select-Object LocalPort, OwningProcess,
  @{n='Process';e={(Get-Process -Id $_.OwningProcess).ProcessName}}

В Linux:

sudo ss -ltnp | grep -E ':80 |:443 '

В выводе будет имя процесса: apache2 (Debian, Ubuntu, Astra) или httpd (RHEL, РЕД ОС, ALT).

Публикация может висеть на нестандартном порту, например 8080. Тогда номер порта виден прямо в адресе базы.

Как узнать веб-сервер 1С в Windows: диспетчер IIS и службы

Службы

Откройте services.msc или выполните в PowerShell:

Get-Service W3SVC, Apache* -ErrorAction SilentlyContinue
  • 🟢 W3SVC («Служба веб-публикаций», World Wide Web Publishing Service) в состоянии «Выполняется» — работает IIS.
  • 🟢 Служба Apache2.4 — установлен Apache. Путь к его httpd.exe виден в свойствах службы.

Обе службы могут стоять на одной машине. Тогда смотрите, кто из них занимает порт (раздел выше).

Диспетчер IIS

  1. Запустите inetmgr.
  2. Раскройте Сайты → Default Web Site. Опубликованные базы выглядят как приложения или виртуальные каталоги с именем из адреса (buh, zup).
  3. Выделите приложение и нажмите «Просмотр каталога» или «Основные настройки». Откроется физическая папка публикации.
  4. Откройте в приложении «Сопоставления обработчиков». У публикации 1С там есть обработчик, который ведёт на wsisapi.dll в папке bin конкретной версии платформы.

Путь к wsisapi.dll сразу показывает версию модуля, например C:\Program Files\1cv8\8.3.24.1548\bin\wsisapi.dll.

Список всех приложений можно вывести и без мыши:

%windir%\system32\inetsrv\appcmd list app
%windir%\system32\inetsrv\appcmd list vdir

Файл default.vrd

В папке каждой публикации лежит default.vrd. Это XML с описанием базы:

<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/buh"
       ib="Srvr=&quot;srv-1c&quot;;Ref=&quot;buh&quot;;">
</point>

Атрибут ib — строка соединения с базой. По ней видно, к какому кластеру и какой базе обращается веб-сервер. Файл одинаков для IIS и Apache, поэтому сам по себе тип сервера не выдаёт, но помогает найти нужную публикацию среди десятка.

Правку default.vrd подхватывает только перезапущенный пул приложений IIS или Apache. Перезапуск обрывает сеансы веб-клиента — делайте его вне рабочего времени или предупредите пользователей.

Как найти публикацию 1С в Linux: конфиги Apache

Модуль 1С подключается директивой LoadModule. Найдите её:

grep -rn "wsap" /etc/apache2/ /etc/httpd/ 2>/dev/null

Типичная находка:

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.24.1548/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>

Отсюда сразу видно:

  • 📂 версию модуля — из пути к wsap24.so;
  • 📂 имя публикации — из Alias;
  • 📂 путь к default.vrd — из ManagedApplicationDescriptor.

Проверить, что модуль действительно загружен, а не просто прописан:

sudo apache2ctl -M | grep 1cws     # Debian, Ubuntu, Astra
sudo httpd -M | grep 1cws          # RHEL, РЕД ОС
apache2 -v                         # версия самого Apache

На Windows с Apache ищите те же строки в httpd.conf. Обычно это C:\Apache24\conf\httpd.conf, но точный путь берите из свойств службы Apache2.4.

Как вычислить веб-сервер со стороны кластера серверов 1С

Бывает, что адреса публикации никто не помнит, а база точно открывается через веб-клиент. Тогда ищите веб-сервер с другой стороны — от кластера.

Модуль веб-сервера подключается к кластеру как обычный клиент: сначала к агенту на порт 1540, затем к менеджеру кластера на 1541 и к рабочим процессам rphost в диапазоне портов рабочего сервера (по умолчанию 1560:1591).

Через консоль или rac

В консоли администрирования откройте список сеансов базы. У сеансов веб-клиента приложение «Веб-клиент», а в колонке «Компьютер» — машина, с которой пришло соединение к кластеру. Для веб-клиента это и есть веб-сервер.

Из командной строки то же самое даёт rac:

rac cluster list
rac session list --cluster=<uuid-кластера>

В выводе ищите сеансы с app-id : WebClient и смотрите поле host. Если на кластере включена авторизация администратора, добавьте параметры логина — их список покажет rac help session.

Через сетевые соединения

На сервере 1С выполните:

netstat -ano | findstr ":1541"

Среди удалённых адресов будут компьютеры пользователей тонкого клиента и веб-сервер. Сравните с адресом из DNS-записи публикации (nslookup srv-web).

На самом веб-сервере процесс, который держит соединения с 1541 и портами rphost, покажет тип сервера: w3wp.exe — IIS, httpd.exe или apache2 — Apache.

Утилита webinst: чем она помогает в диагностике

webinst — консольная утилита публикации из комплекта платформы. Лежит рядом с 1cv8:

  • 🪟 C:\Program Files\1cv8\8.3.xx.xxxx\bin\webinst.exe;
  • 🐧 /opt/1cv8/x86_64/8.3.xx.xxxx/webinst.

Команды «показать текущие публикации» у неё нет. Зато она полезна в трёх ситуациях.

  1. Проверить, под какой сервер публиковали. Если в истории команд или в скриптах администратора есть вызов webinst, ключ сервера отвечает на вопрос: -iis, -apache22 или -apache24.
  2. Опубликовать заново той же версией, что и кластер. После обновления платформы публикацию часто перевыпускают, чтобы обновить путь к модулю:
sudo /opt/1cv8/x86_64/8.3.24.1548/webinst -publish -apache24 \
  -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv-1c;Ref=buh;" \
  -confpath /etc/apache2/apache2.conf
  1. Удалить старую публикацию, которая мешает новой: тот же вызов с ключом -delete вместо -publish.

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

Перед webinst -publish сохраните копию httpd.conf или apache2.conf. Утилита дописывает в конфиг свои директивы, а повторный запуск поверх ручных правок легко даёт дубли LoadModule, из-за которых Apache не стартует.

Ошибки при поиске и проверке веб-сервера 1С

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

Перезапуск IIS (iisreset) или Apache (systemctl restart apache2) обрывает все сеансы веб-клиента и тонкого клиента через веб-сервер. Несохранённые документы у пользователей пропадут. Делайте это после рабочего дня или предупредите людей заранее.

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

Можно ли узнать веб-сервер изнутри самой 1С?
Только адрес публикации: он виден в настройках базы в окне запуска и в адресной строке браузера у веб-клиента. Тип сервера (IIS или Apache) программа не показывает, его смотрят по заголовку Server.
Нужен ли веб-сервер, если все работают через тонкий клиент по локальной сети?
Нет. Тонкий клиент в локальной сети подключается к кластеру напрямую. Веб-сервер нужен для веб-клиента, подключения через интернет, HTTP-сервисов, веб-сервисов и мобильных приложений.
Может ли веб-сервер стоять на другой машине, чем сервер 1С?
Да, это обычная схема. Веб-сервер лишь пересылает запросы в кластер по портам 1540, 1541 и диапазону рабочих процессов, поэтому эти порты должны быть открыты между машинами.
Что лучше для публикации: IIS или Apache?
На Windows Server проще IIS: он ставится как роль системы. На Linux вариант один — Apache. Для 1С важнее совпадение версии модуля с версией платформы, чем выбор сервера.
Где посмотреть версию модуля веб-сервера, если доступа к конфигам нет?
В обработчике IIS или в строке LoadModule указан путь с номером версии платформы. Без доступа к серверу версию модуля узнать нельзя, заголовок Server показывает только версию IIS или Apache.