For the complete documentation index, see llms.txt. This page is also available as Markdown.

Настройка Nginx

На этом этапе необходимо настроить Nginx для совместной работы Frontend и Backend частей iEXExchanger.

Nginx принимает входящие запросы и направляет их в нужный компонент системы:

  • публичные страницы — в Angular SSR;

  • API-запросы — в Laravel через PHP-FPM;

  • WebSocket-соединения — в Laravel Reverb;

  • изображения и загруженные файлы — в публичные каталоги Backend;

  • пользовательские Frontend-файлы — в каталог /ng-custom;

  • файлы подтверждения — в отдельный каталог Backend;

  • экспортируемые файлы — в каталог экспортов.

Инструкция предназначена для установки iEXExchanger через FastPanel, когда Frontend и Backend находятся на одном сервере.

Перед началом

Перед настройкой убедитесь, что:

  • основной домен ваш_домен создан в FastPanel;

  • технический поддомен app.ваш_домен создан в FastPanel;

  • SSL-сертификаты установлены для обоих доменов;

  • Frontend загружен и настроен;

  • Backend загружен и настроен;

  • рабочей директорией Backend является каталог public;

  • Backend работает через PHP-FPM;

  • Angular SSR запускается через PM2;

  • Angular SSR слушает 127.0.0.1:4000;

  • Laravel Reverb слушает 127.0.0.1:8080;

  • у вас есть доступ к FastPanel и серверу по SSH.

Что необходимо заменить

Значение
Назначение

ваш_домен

Основной домен Frontend

www.ваш_домен

Дополнительный Frontend-домен

app.ваш_домен

Технический домен Backend

IP_СЕРВЕРА

Публичный IP-адрес сервера

имя_пользователя_frontend

Системный пользователь Frontend

имя_пользователя_backend

Системный пользователь Backend

/var/run/app.ваш_домен.sock

Сокет PHP-FPM Backend

Пример:

Сохранение текущей конфигурации

Перед изменениями сохраните текущую конфигурацию обоих сайтов.

Для Backend откройте:

«Сайты» — выберите app.ваш_домен — «Ручная настройка» — «Frontend»

Для Frontend откройте:

«Сайты» — выберите ваш_домен — «Ручная настройка» — «Frontend»

Скопируйте обе конфигурации в отдельные файлы. Это позволит быстро вернуть предыдущую версию, если при редактировании будет допущена ошибка.


Настройка Nginx для Backend

Backend работает на техническом поддомене:

Стандартную Laravel-конфигурацию FastPanel заменять не нужно. На стороне Backend необходимо сохранить существующую обработку PHP и добавить маршруты Laravel Reverb.

1

Открытие конфигурации Backend

В FastPanel откройте:

«Сайты» — выберите app.ваш_домен — «Ручная настройка» — «Frontend»

2

Проверка PHP-FPM

В конфигурации найдите стандартный PHP-блок:

В реальной конфигурации FastPanel сокет будет содержать ваш Backend-домен:

Проверьте существование сокета:

Если файла нет, проверьте настройки PHP-FPM в FastPanel.

3

Добавление WebSocket Laravel Reverb

После PHP-блока добавьте:

Маршрут /app/ используется для WebSocket-соединений.

Через него работают:

  • обновления статусов заявок;

  • чат заявки;

  • онлайн-статусы;

  • системные события;

  • уведомления в реальном времени;

  • обновления административной панели.

4

Добавление HTTP API Laravel Reverb

После блока /app/ добавьте:

Маршрут /apps/ используется внутренним HTTP API Laravel Reverb.

Он не является WebSocket-соединением, поэтому для него используется:

WebSocket-заголовки нужны только для /app/.

5

Почему proxy_pass используется без завершающего слеша

Используется:

Без завершающего / Nginx сохраняет исходный URI:

Если добавить завершающий слеш, путь может быть изменён при проксировании.

6

Сохранение настройки Backend

После добавления блоков нажмите «Сохранить».

Проверьте конфигурацию:

Если ошибок нет, примените изменения:


Настройка Nginx для Frontend

Frontend работает на основном домене:

На стороне Frontend необходимо удалить стандартное проксирование FastPanel через Apache и настроить:

  • Angular SSR;

  • Backend API;

  • Laravel Reverb;

  • статические файлы Backend;

  • пользовательские файлы /ng-custom;

  • файлы подтверждения;

  • экспортируемые файлы;

  • кеширование;

  • HTTPS.

1

Открытие конфигурации Frontend

В FastPanel откройте:

«Сайты» — выберите ваш_домен — «Ручная настройка» — «Frontend»

2

Удаление старых правил FastPanel

В конфигурации основного домена удалите стандартное проксирование через Apache:

Удалите старое правило статических файлов:

Удалите named location:

Если в конфигурации остался старый API-маршрут /apis, удалите:

В новой конфигурации используется:

Удалите старые языковые правила:

Удалите глобальный заголовок:

Языки должны обрабатываться Angular SSR, а не Nginx.

3

Основные переменные Frontend

Внутри блока server добавьте:

Пример:

Параметр:

разрешает принимать запросы размером до 64 МБ.

Для загрузки файлов также проверьте PHP-настройки:

4

Настройка Gzip

Найдите:

Замените на:

Рекомендуемая конфигурация:

Уровень 5 обеспечивает хорошее сжатие без чрезмерной нагрузки на процессор.

5

Настройка файлов подтверждения

Файлы подтверждения используются сервисами, которые требуют разместить файл в корне основного домена.

Примеры:

Файлы должны находиться в Backend:

Добавьте:

Пример:

6

Настройка /ng-custom/

Каталог /ng-custom/ содержит Frontend-файлы, которые могут изменяться без полной пересборки Angular.

Файлы находятся в:

Добавьте:

Пример проверки:

Длительное кеширование отключено, поскольку содержимое файла может измениться без изменения URL.

7

Настройка Backend API

Frontend обращается к Laravel через:

Пример внешнего запроса:

Laravel должен получить путь без внешнего префикса:

Добавьте:

Схема работы:

API передаётся напрямую в PHP-FPM. Запрос не проходит через внешний Backend-домен и не требует отдельного HTTPS-проксирования.

8

Публичный API /api/v3/

Этот маршрут добавляется только в том случае, если публичный API должен открываться через основной домен.

Префикс /api/v3/ сохраняется:

Добавьте перед общим location /:

Если публичный API через основной домен не используется, не добавляйте маршрут /api/v3/.

9

Настройка изображений Backend

Добавьте:

Изображения кешируются на один год при условии, что каждый новый файл получает новый URL.

10

Настройка Laravel Storage

Добавьте:

11

Настройка /dist/

В каталоге /dist/ могут находиться файлы с постоянными именами:

Их содержимое может измениться без изменения URL.

Добавьте:

Не используйте для всего /dist/:

Иначе переводы, изображения и другие файлы могут не обновляться у клиентов.

12

Настройка /static/

Добавьте:

Явная политика кеширования не задаётся, поскольку не для всех файлов подтверждена неизменяемость URL.

13

Настройка /exports/

Если файлы находятся в:

добавьте:

Если экспорты находятся в:

используйте:

Настройка Laravel Reverb на Frontend

Если публичный сайт подключается к Reverb через основной домен, добавьте маршруты /app/ и /apps/.

1

WebSocket

2

HTTP API Reverb

Настройка статических файлов Angular

Статические файлы Angular передаются в SSR-процесс:

Nginx не переопределяет Cache-Control для Angular-файлов. Политику кеширования определяет SSR-сервер.

Настройка Angular SSR

Добавьте общий маршрут:

Для обычных SSR-запросов не нужны:

WebSocket работает только через /app/.

Поэтому для Angular используется:

Это позволяет Nginx повторно использовать соединения с SSR через keepalive.

Настройка языков

Языки не настраиваются в Nginx.

Не добавляйте:

Если на сайте используются языки:

они должны быть настроены во Frontend.

Nginx только передаёт запрос в Angular SSR:

Angular SSR самостоятельно определяет язык, маршрут и необходимые редиректы.

Cloudflare и HTTPS

Для перенаправления HTTP на HTTPS можно использовать:

Если FastPanel уже создала отдельный блок для порта 80, используйте отдельный редирект:

В этом случае в HTTPS-блоке не должно быть повторного:

Для Cloudflare используйте:

или предпочтительно:

Что не нужно добавлять

Не добавляйте:

Не добавляйте:

Не используйте старый маршрут:

Не проксируйте Frontend через:

Не добавляйте языковые map-блоки.

Не добавляйте глобально:

Не используйте в proxy_pass:

Не добавляйте /api/v3/, если публичный API не используется.


Полная готовая конфигурация Nginx

Ниже приведён пример полной конфигурации Nginx для основного домена Frontend.

Перед сохранением обязательно замените:

  • ваш_домен;

  • www.ваш_домен;

  • app.ваш_домен;

  • имя_пользователя_frontend;

  • имя_пользователя_backend;

  • IP_СЕРВЕРА;

  • путь к SSL-сертификату;

  • путь к SSL-ключу;

  • PHP-FPM socket Backend.

Не добавляйте BACKEND_ORIGIN_IP, upstream iex_backend_https, языковые map-блоки и старый путь /apis. В этой версии Backend API работает через PHP-FPM socket и путь /backend-api/.

Коротко

Настройка выполняется отдельно для двух сайтов.

На Backend-домене сохраняется стандартная Laravel-конфигурация FastPanel и добавляются маршруты Laravel Reverb:

На Frontend-домене настраиваются:

После настройки публичный сайт работает через Angular SSR на порту 4000, Laravel API подключается напрямую через PHP-FPM, а события реального времени передаются в Reverb на порту 8080.

  • языки обрабатывает Angular SSR, а не Nginx.

Последнее обновление

Это было полезно?