Обновление конфигурации файлов подключения для 1С:Предприятие и настройка Apache для корректной работы с веб-публикацией

This commit is contained in:
2026-05-08 15:05:15 +03:00
parent 66f3a8d8a3
commit c94995f5d0
4 changed files with 87 additions and 35 deletions
+19 -10
View File
@@ -1,10 +1,19 @@
<?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="/BuhBase"
ib="Srvr=192.168.10.195;Ref=УПФ"
enableStandardOData="true">
<ws publishExtensionsByDefault="true" />
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>
</point>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Файл подключения к информационной базе 1С:Предприятие.
ОТРЕДАКТИРУЙТЕ перед установкой приложения, указав:
- адрес или DNS-имя сервера 1С:Предприятие в атрибуте `Srvr` (через `;` можно несколько узлов кластера),
- имя информационной базы в атрибуте `Ref`.
Если сервер 1С отвечает клиенту по DNS-имени, не разрешаемому из контейнера,
дополнительно пропишите соответствия имя → IP в `web-1c/docker-compose.yml`,
секция `server.extra_hosts`.
-->
<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="/app-web-1c/BuhBase"
ib="Srvr=192.0.2.1;Ref=YourInfoBase"
enableStandardOData="true">
<ws publishExtensionsByDefault="true" />
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>
</point>
+19 -8
View File
@@ -1,5 +1,3 @@
version: "3.7"
services:
app_proxy:
environment:
@@ -16,9 +14,22 @@ services:
stop_grace_period: 1m
volumes:
- ${APP_DATA_DIR}/data/vrd/default.vrd:/usr/local/apache2/htdocs/BuhBase/default.vrd:ro
# Сервер 1С:Предприятие может отвечать клиенту DNS-именем рабочего процесса
# (например, srv-1c), которое не разрешается из контейнера, даже если в default.vrd
# стоит IP. Прописываем соответствие имя → IP для всех узлов кластера 1С.
# Поправьте список под вашу сеть.
extra_hosts:
- "srv-1c:192.168.10.195"
# ──────────────────────────────────────────────────────────────────
# При необходимости разкомментируйте и пропишите соответствия имя → IP
# для УЗЛОВ КЛАСТЕРА 1С (рабочего процесса rphost, агента ragent и т.п.).
#
# Это нужно, когда сервер 1С отвечает клиенту по DNS-имени
# (например, "srv-1c"), которое не разрешается из контейнера —
# даже если в default.vrd указан IP. Без таких записей клиент 1С
# упадёт с ошибкой "Temporary failure in name resolution".
#
# Имена должны совпадать с теми, что 1С возвращает в ответах
# (часто это hostname машины с сервером 1С). IP укажите свой.
#
# Этот файл редактируется ПОСЛЕ установки приложения, в каталоге
# ~/dfwebos-data/app-data/web-1c/docker-compose.yml — там же
# лежит данная подсказка.
# ──────────────────────────────────────────────────────────────────
# extra_hosts:
# - "srv-1c:192.0.2.10"
+16 -10
View File
@@ -1,10 +1,16 @@
<?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="/BuhBase"
ib="Srvr=192.168.10.195;Ref=УПФ"
enableStandardOData="true">
<ws publishExtensionsByDefault="true" />
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>
</point>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Дефолтный файл подключения к информационной базе 1С.
Этот файл «зашит» в образ и используется только если пользователь не подменил его
через том ${APP_DATA_DIR}/data/vrd/default.vrd. Поэтому здесь — нейтральные плейсхолдеры.
Реальные параметры подключения пользователь задаёт в data/vrd/default.vrd.
-->
<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="/app-web-1c/BuhBase"
ib="Srvr=192.0.2.1;Ref=YourInfoBase"
enableStandardOData="true">
<ws publishExtensionsByDefault="true" />
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>
</point>
+33 -7
View File
@@ -192,7 +192,7 @@ LoadModule dir_module modules/mod_dir.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so
<IfModule unixd_module>
#
@@ -560,8 +560,36 @@ SSLRandomSeed connect builtin
LoadModule _1cws_module /opt/1cv8/x86_64/8.3.23.1912/wsap24.so
# 1c publication
Alias "/BuhBase" "/usr/local/apache2/htdocs/BuhBase/"
# ───────────────────────────────────────────────────────────────────────────
# 1С web-публикация под префиксом DFWebOS-прокси `/app-web-1c/BuhBase/`.
#
# Архитектура запроса:
# браузер → /app-web-1c/BuhBase/X
# DFWebOS-прокси → стрипает префикс /app-web-1c → Apache видит /BuhBase/X
# ↓
# mod_rewrite внутренне ПРИДОБАВЛЯЕТ префикс обратно: /BuhBase/X → /app-web-1c/BuhBase/X
# ↓
# 1С-handler по пути /app-web-1c/BuhBase/* читает default.vrd и видит совпадение
# с base="/app-web-1c/BuhBase". URL-ы, которые он генерирует в HTML/JS, тоже
# получают этот префикс — браузер их правильно проксирует обратно.
#
# Зачем такая схема: 1С-handler формирует <base href="..."> и абсолютные пути
# из атрибута `base` в default.vrd. Если бы base="/BuhBase", все ссылки 1С
# в HTML стали бы корне-привязанными `/BuhBase/...`, в обход DFWebOS-прокси,
# и попадали бы в SPA-fallback DFWebOS (404).
# ───────────────────────────────────────────────────────────────────────────
# Внутренний rewrite: приклеиваем префикс /app-web-1c обратно перед 1С-handler.
# [PT] (passthrough) обязателен, чтобы Apache повторно прогнал URL через Alias/Location.
<IfModule rewrite_module>
RewriteEngine On
# Не перезаписываем то, что уже под префиксом (защита от циклов)
RewriteCond %{REQUEST_URI} !^/app-web-1c/
RewriteRule ^/BuhBase(/.*)?$ /app-web-1c/BuhBase$1 [PT,L]
</IfModule>
# 1С-handler привязан к публичному префиксу — совпадает с base в default.vrd.
Alias "/app-web-1c/BuhBase" "/usr/local/apache2/htdocs/BuhBase/"
<Directory "/usr/local/apache2/htdocs/BuhBase/">
AllowOverride All
Options None
@@ -570,11 +598,9 @@ Alias "/BuhBase" "/usr/local/apache2/htdocs/BuhBase/"
ManagedApplicationDescriptor "/usr/local/apache2/htdocs/BuhBase/default.vrd"
</Directory>
# Перехватываем ВСЕ запросы под /BuhBase (включая /BuhBase/ru_RU/BuhBase/?...
# Location перехватывает ВСЕ подпути (включая /app-web-1c/BuhBase/ru_RU/BuhBase/?...
# которые 1С генерирует для внешних ссылок и перезапуска клиента).
# Location работает по URL, а не по файловой системе — поэтому не возвращает 404
# на несуществующие подпути, а отдаёт всё в 1c-application handler.
<Location "/BuhBase">
<Location "/app-web-1c/BuhBase">
SetHandler 1c-application
ManagedApplicationDescriptor "/usr/local/apache2/htdocs/BuhBase/default.vrd"