> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/learn/server-domeny-i-infrastruktura/overview/architecture.md).

# Архитектура Nginx

Nginx является единой публичной точкой входа iEXExchanger. Он завершает HTTPS, выбирает сайт по имени домена, отдаёт статические файлы и передаёт динамические запросы нужному внутреннему процессу.

## Карта трафика

| Входящий запрос                        | Назначение                                     |
| -------------------------------------- | ---------------------------------------------- |
| `ваш_домен/`                           | SSR-процесс клиентского сайта                  |
| Подтверждённые пути API на `ваш_домен` | Серверная часть iEXExchanger                   |
| Подтверждённые пути файлов             | Разрешённые каталоги статических файлов        |
| Подтверждённый путь реального времени  | Внутренний процесс Reverb с WebSocket          |
| `app.ваш_домен`                        | Публичный каталог PHP-приложения через FastCGI |

Пути API, файлов и канала реального времени берите из текущей поставки и активной конфигурации. Не создавайте широкое правило вида «всё с `/api`» без сверки: оно может перехватить клиентский маршрут или отправить приватный адрес не тому приложению.

## Граница публичного доступа

Nginx слушает публичные 80 и 443. SSR, PostgreSQL, Redis и Reverb слушают только loopback или защищённую приватную сеть. Их внутренние порты обозначаются как `<SSR_PORT>` и `<REALTIME_PORT>` и не открываются в сетевом экране.

Cloudflare, если он включён, подключается к Nginx по HTTPS. Nginx не должен перенаправлять публичный запрос обратно через Cloudflare к тому же серверу без явной необходимости: такая петля усложняет диагностику и правила доступа.

## Владение конфигурацией

FASTPANEL создаёт и обновляет базовые виртуальные хосты. Определите, какие файлы генерируются панелью, а какие предназначены для пользовательских вставок. Прямая правка сгенерированного файла может исчезнуть после сохранения сайта в панели.

Активную конфигурацию показывают команды:

```bash
sudo nginx -t
sudo nginx -T
```

`nginx -t` проверяет синтаксис и возможность открыть используемые файлы. `nginx -T` дополнительно выводит всю конфигурацию; не публикуйте его вывод без очистки доменов, путей и заголовков. Назначение ключей описано в [официальном справочнике Nginx](https://nginx.org/en/docs/switches.html).

## Основные требования

Для каждого публичного домена должен существовать один однозначный HTTPS-vhost. В нём проверяются:

* `server_name` без чужих доменов;
* сертификат для этого имени;
* корректный корневой или proxy backend;
* ограничение размера запроса по требованиям загрузок;
* заголовки исходного протокола и адреса;
* WebSocket Upgrade для канала реального времени;
* отдельные журналы доступа и ошибок;
* отсутствие выдачи скрытых файлов и файла окружения.

Размер запроса согласуйте с лимитом загрузок в PHP и в настройках приложения. Увеличение только `client_max_body_size` не исправит меньший лимит PHP или проверку самой формы.

## Порядок изменения маршрута

1. Определите URL и ожидаемый компонент.
2. Найдите активный vhost через `nginx -T`.
3. Выберите пользовательский include FASTPANEL, который не перезаписывается.
4. Скопируйте изменяемый файл в резервную копию с датой.
5. Внесите минимальное правило.
6. Выполните `sudo nginx -t`.
7. Выполните `sudo systemctl reload nginx`.
8. Проверьте точный URL и соседние маршруты.
9. При ошибке верните файл, снова выполните тест и reload.

Reload применяет новую конфигурацию без принудительного обрыва обслуживаемых соединений; модель перечитывания конфигурации описана в [руководстве Nginx](https://nginx.org/en/docs/beginners_guide.html#control).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/learn/server-domeny-i-infrastruktura/overview/architecture.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
