Как устранить ошибку 404 при публикации клиент-серверной базы 1С на Apache

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Публикация информационной базы 1С на веб-сервере — стандартная задача, однако при переходе от файлового варианта к клиент-серверному администраторы часто сталкиваются с трудностями. Одной из самых коварных проблем является ошибка 404 Not Found, которая возвращается не самим веб-сервером Apache, а модулем расширения 1С. Ситуация осложняется тем, что файловые базы на этом же сервере могут работать абсолютно корректно. В данной статье мы подробно разберем, почему возникает эта ошибка и как правильно настроить среду для стабильной работы.

Анализируем природу ошибки 404 в контексте 1С

Когда мы видим ошибку {"#exception":"{http://v8.1c.ru/8.2/virtual-resource-system}Exception"... "reason":404, "descr":"HTTP: Not found"}, это означает, что запрос успешно дошел до веб-сервера Apache и был передан модулю wsap24.dll. Однако внутренняя система маршрутизации 1С (Virtual Resource System) не смогла сопоставить входящий URL с опубликованными ресурсами. Проанализируем типичную ситуацию: веб-сервер "видит" путь, но модуль 1С "отказывается" признавать его своим.

Рассмотрим основные причины такого поведения:

  1. Несоответствие версий библиотеки расширения веб-сервера и установленной платформы.
  2. Ошибки в файле описания виртуального ресурса default.vrd.
  3. Конфликты алиасов (псевдонимов) в конфигурационном файле httpd.conf.
  4. Проблемы взаимодействия между веб-сервером и сервером приложений 1С (особенно если они на разных машинах).

Шаг 1: Проверка версии модуля расширения

Первым делом проверим, какую библиотеку использует Apache. Если вы недавно обновляли платформу 1С, старый путь в конфигурации веб-сервера может привести к неработоспособности клиент-серверных соединений, даже если сама библиотека физически существует. Выясним причину: модуль расширения должен строго соответствовать версии сервера 1С, к которому идет обращение.

Откроем файл httpd.conf (обычно находится в папке C:/Apache24/conf/) и найдем строку загрузки модуля. Она должна выглядеть примерно так:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.27.1786/bin/wsap24.dll"

Убедимся, что путь ведет именно в каталог bin той версии платформы, которая запущена на сервере 1С. Разрядность Apache (x64) и библиотеки 1С также должны совпадать.

Шаг 2: Настройка файла default.vrd

Для клиент-серверного варианта файл default.vrd имеет решающее значение. Рассмотрим пример корректного содержимого этого файла для базы, расположенной на сервере 1srv с именем testdoc:


<?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="/testdoc"
        ib="Srvr="1srv";Ref="testdoc";">
    <ws enable="false" pointEnableCommon="false"/>
    <standardOdata enable="false"
            reuseSessions="autouse"
            sessionMaxAge="20"
            poolSize="10"
            poolTimeout="5"/>
    <analytics enable="false"/>
</point>

Проанализируем ключевой атрибут base="/testdoc". Он обязательно должен совпадать с алиасом, указанным в настройках Apache. Если в httpd.conf вы указали Alias "/test", а в .vrd файле написано base="/testdoc", вы неизбежно получите ошибку 404. Для исключения подобных опечаток можно использовать обработку для автоматизированной публикации баз на веб-сервере.

Шаг 3: Синхронизация алиасов в Apache

Теперь разберем, как правильно прописать публикацию в основном конфиге веб-сервера. Посмотрим на структуру записей, которая часто приводит к ошибкам. Если у вас опубликовано несколько баз, порядок их следования имеет значение. Рассмотрим фрагмент кода:


Alias "/testdoc" "C:/Apache24/htdocs/testdoc/"
<Directory "C:/Apache24/htdocs/testdoc/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/Apache24/htdocs/testdoc/default.vrd"
</Directory>

Важные правила настройки:

  1. Единообразие имен: Для минимизации ошибок рекомендуется делать имя папки на диске, имя алиаса в URL и имя базы в параметре Ref одинаковыми (например, везде testdoc).
  2. Порядок следования: Если у вас есть алиасы с похожими именами (например, /test и /testdoc), всегда располагайте более длинный и специфичный путь выше более короткого. Apache может перехватить запрос к /testdoc коротким алиасом /test, что вызовет ошибку маршрутизации в модуле 1С.
  3. Регистр символов: Хотя Windows нечувствителен к регистру, платформа 1С при разборе URL внутри веб-модуля может требовать строгого соответствия. Пишите имена в нижнем регистре или CamelCase единообразно во всех файлах.

Шаг 4: Взаимодействие веб-сервера и сервера 1С

Поскольку в клиент-серверном варианте веб-сервер выступает лишь шлюзом, он должен иметь возможность "достучаться" до кластера 1С. Если Apache и Сервер 1С находятся на разных машинах, проанализируем следующие моменты:

Разрешение имен: Веб-сервер должен знать, какой IP-адрес соответствует имени 1srv. Проверьте это командой ping 1srv с машины, где установлен Apache. Если имя не разрешается, добавьте запись в файл C:\Windows\System32\drivers\etc\hosts.

Доступ к портам: Убедитесь, что брандмауэр на стороне сервера 1С разрешает входящие соединения на порты кластера (по умолчанию 1540, 1541, 1560-1591). Даже если вы отключали брандмауэр для тестов, проверьте настройки сетевой безопасности в вашей инфраструктуре.

Шаг 5: Права доступа

Часто забываемый аспект — под каким пользователем запущен сервис Apache. По умолчанию это LocalSystem. Выясним причину возможных проблем: для работы с клиент-серверной базой модулю 1С может потребоваться доступ к временным папкам или сетевым ресурсам.

Убедитесь, что у пользователя, от имени которого работает Apache, есть права "Полный доступ" на каталог с публикацией (C:/Apache24/htdocs/testdoc/). Это необходимо, чтобы модуль мог беспрепятственно читать файл default.vrd.

Итоги и рекомендации

Подводя итог, можно сказать, что решение проблемы 404 при публикации клиент-серверной базы чаще всего кроется в ручной корректировке путей. Рассмотрим контрольный список действий:

Выполнив эти шаги, мы добьемся того, что модуль расширения 1С корректно идентифицирует входящий запрос и перенаправит его на сервер приложений, устранив ошибку 404. Для упрощения администрирования можно воспользоваться приложением для удобного управления множеством веб-публикаций 1С.

← На главную