Архитектура решения

МаркетПро состоит из двух частей, которые работают на одном сервере:

Серверная часть — 1С-Битрикс на PHP. Здесь админка, каталог, заказы, обмен с 1С — всё, что вы видите в панели управления. Она же отдаёт данные наружу через API.

Клиентская часть — приложение на Nuxt (Node.js). Это то, что видит покупатель: каталог, карточки товаров, корзина, оформление заказа. Данные она берёт у серверной части по API.

Из такого устройства следует почти всё, что отличает МаркетПро от обычного сайта на Битриксе.

Как распределяются запросы

nginx настроен так, что почти любой адрес уходит на Nuxt. Исключения — адреса, которые обслуживает Битрикс:

Адрес

Зачем

/bitrix/

админка и служебные файлы 1С-Битрикс

/api/

обмен клиентской части с серверной

/upload/

загруженные файлы: изображения, документы, файлы обмена с 1С

/local/

доработки решения

/php/

фоновые задачи решения, которые запускает cron

/static/

файлы, которые отдаются как есть: custom.css

/.well-known/

проверка владения доменом при выпуске сертификата; исключение — файлы assetlinks.json и apple-app-site-association для мобильного приложения, их nginx берёт из frontend/static/.well-known

Отсюда правило: не создавайте разделов каталога и страниц с такими адресами — они не дойдут до клиентской части.

Остальные файлы из корня сайта — исходный код, настройки, служебные файлы — наружу не отдаются. Файлы, которые должны открываться по адресу сайта напрямую (robots.txt, sitemap.xml, файл подтверждения для Яндекс.Вебмастера), лежат в frontend/static: их отдаёт клиентская часть.

Что это значит на практике

Изменения появляются не сразу. Часть настроек попадает в конфигурацию клиентской части, и после сохранения её нужно пересобрать. Обычно это занимает 5–10 минут, а запускается автоматически.

Панели «Эрмитаж» нет. Править страницы прямо на сайте нельзя: публичная часть не собирается на PHP. Всё правится в админке.

Шаблон сайта не редактируется как обычно. Клиентская часть поставляется собранной, исходных компонентов на сервере нет. Внешний вид меняется настройками решения, а тонкие правки — своими стилями: Свои стили сайта.

За клиентскую часть отвечает процесс Node.js. Он работает под менеджером процессов PM2. Если сайт отдаёт «502 Bad Gateway», обычно дело в нём — см. 502 Bad Gateway.

Где что лежит на сервере

Папка

Что внутри

/home/bitrix/www

сайт: файлы 1С-Битрикс

/home/bitrix/www/frontend

клиентская часть на Nuxt

/home/bitrix/www/frontend/static

файлы, которые клиентская часть отдаёт как есть: robots.txt, sitemap.xml, файлы подтверждения

/home/bitrix/www/static

custom.css — свои стили сайта

/home/bitrix/www/php

фоновые задачи решения для cron

/etc/nginx/bx/site_avaliable

конфигурация nginx для сайтов

Пути указаны для стандартной виртуальной машины BitrixVM с одним сайтом. При нескольких сайтах корень будет в /home/bitrix/ext_www/<домен>.