Публикация информационной базы 1С на веб-сервере — стандартная задача, однако при переходе от файлового варианта к клиент-серверному администраторы часто сталкиваются с трудностями. Одной из самых коварных проблем является ошибка 404 Not Found, которая возвращается не самим веб-сервером Apache, а модулем расширения 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С "отказывается" признавать его своим.
Рассмотрим основные причины такого поведения:
default.vrd.httpd.conf.Первым делом проверим, какую библиотеку использует 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С также должны совпадать.
Для клиент-серверного варианта файл 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. Для исключения подобных опечаток можно использовать обработку для автоматизированной публикации баз на веб-сервере.
Теперь разберем, как правильно прописать публикацию в основном конфиге веб-сервера. Посмотрим на структуру записей, которая часто приводит к ошибкам. Если у вас опубликовано несколько баз, порядок их следования имеет значение. Рассмотрим фрагмент кода:
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>
Важные правила настройки:
Ref одинаковыми (например, везде testdoc)./test и /testdoc), всегда располагайте более длинный и специфичный путь выше более короткого. Apache может перехватить запрос к /testdoc коротким алиасом /test, что вызовет ошибку маршрутизации в модуле 1С.Поскольку в клиент-серверном варианте веб-сервер выступает лишь шлюзом, он должен иметь возможность "достучаться" до кластера 1С. Если Apache и Сервер 1С находятся на разных машинах, проанализируем следующие моменты:
Разрешение имен: Веб-сервер должен знать, какой IP-адрес соответствует имени 1srv. Проверьте это командой ping 1srv с машины, где установлен Apache. Если имя не разрешается, добавьте запись в файл C:\Windows\System32\drivers\etc\hosts.
Доступ к портам: Убедитесь, что брандмауэр на стороне сервера 1С разрешает входящие соединения на порты кластера (по умолчанию 1540, 1541, 1560-1591). Даже если вы отключали брандмауэр для тестов, проверьте настройки сетевой безопасности в вашей инфраструктуре.
Часто забываемый аспект — под каким пользователем запущен сервис Apache. По умолчанию это LocalSystem. Выясним причину возможных проблем: для работы с клиент-серверной базой модулю 1С может потребоваться доступ к временным папкам или сетевым ресурсам.
Убедитесь, что у пользователя, от имени которого работает Apache, есть права "Полный доступ" на каталог с публикацией (C:/Apache24/htdocs/testdoc/). Это необходимо, чтобы модуль мог беспрепятственно читать файл default.vrd.
Подводя итог, можно сказать, что решение проблемы 404 при публикации клиент-серверной базы чаще всего кроется в ручной корректировке путей. Рассмотрим контрольный список действий:
wsap24.dll взят из папки bin актуальной платформы.base в default.vrd в точности (до символа) повторяет Alias из httpd.conf.ib="Srvr=...".Выполнив эти шаги, мы добьемся того, что модуль расширения 1С корректно идентифицирует входящий запрос и перенаправит его на сервер приложений, устранив ошибку 404. Для упрощения администрирования можно воспользоваться приложением для удобного управления множеством веб-публикаций 1С.