Какой веб-сервер публикует базу 1С: IIS или Apache и где его искать
Содержание
Быстрее всего узнать веб-сервер 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 ему не нужны.
Перед поиском соберите три вещи:
- 🔗 Адрес, по которому пользователи открывают базу (веб-клиент или тонкий клиент через интернет ).
- 🖥️ Доступ к машине, на которую указывает этот адрес: RDP или SSH с правами администратора.
- 🔢 Номер версии платформы на сервере 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 только для этой проверки.
Через браузер
- Откройте адрес публикации.
- Нажмите
F12и перейдите на вкладку «Сеть» (Network). - Обновите страницу и выберите первый запрос в списке.
- В блоке заголовков ответа найдите
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
- Запустите
inetmgr. - Раскройте
Сайты → Default Web Site. Опубликованные базы выглядят как приложения или виртуальные каталоги с именем из адреса (buh,zup). - Выделите приложение и нажмите «Просмотр каталога» или «Основные настройки». Откроется физическая папка публикации.
- Откройте в приложении «Сопоставления обработчиков». У публикации 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="srv-1c";Ref="buh";">
</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.
Команды «показать текущие публикации» у неё нет. Зато она полезна в трёх ситуациях.
- Проверить, под какой сервер публиковали. Если в истории команд или в скриптах администратора есть вызов
webinst, ключ сервера отвечает на вопрос:-iis,-apache22или-apache24. - Опубликовать заново той же версией, что и кластер. После обновления платформы публикацию часто перевыпускают, чтобы обновить путь к модулю:
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
- Удалить старую публикацию, которая мешает новой: тот же вызов с ключом
-deleteвместо-publish.
Полный список ключей выводит запуск webinst без параметров или webinst -help.
Перед webinst -publish сохраните копию httpd.conf или apache2.conf. Утилита дописывает в конфиг свои директивы, а повторный запуск поверх ручных правок легко даёт дубли LoadModule, из-за которых Apache не стартует.
Ошибки при поиске и проверке веб-сервера 1С
Перезапуск IIS (iisreset) или Apache (systemctl restart apache2) обрывает все сеансы веб-клиента и тонкого клиента через веб-сервер. Несохранённые документы у пользователей пропадут. Делайте это после рабочего дня или предупредите людей заранее.