> 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/knowledge-base/servery-domeny-i-infrastruktura/overview/what-is-nginx.md).

# Что такое Nginx

Nginx — программа, которая принимает веб-запросы и отдаёт ответ сама либо передаёт запрос другому компоненту. В iEXExchanger он является публичной точкой входа для клиентского сайта, панели управления, API, файлов и WebSocket.

Nginx работает перед PHP и Node.js. Он не рассчитывает курс и не обрабатывает заявку: его задача — понять домен и путь, применить сетевые правила и направить запрос правильному внутреннему процессу.

## Какие роли выполняет Nginx

| Роль              | Что происходит                                   | Пример в iEXExchanger                                              |
| ----------------- | ------------------------------------------------ | ------------------------------------------------------------------ |
| Веб-сервер        | Файл отдаётся без запуска приложения             | Публичные изображения, стили и собранные скрипты                   |
| Reverse proxy     | Запрос передаётся внутреннему HTTP-процессу      | Клиентский SSR через PM2 или WebSocket через Reverb                |
| FastCGI-шлюз      | PHP-запрос передаётся PHP-FPM                    | Панель управления и серверная часть                                |
| Завершение TLS    | Проверяется сертификат и расшифровывается HTTPS  | `ваш_домен` и `app.ваш_домен`                                      |
| Балансировщик     | Запрос выбирает один из нескольких upstream      | Используется только при подтверждённой многопроцессной архитектуре |
| Ограничение и кеш | Применяются лимиты, буферы и правила кеширования | Только для проверенных маршрутов и публичных данных                |

Существуют NGINX Open Source и коммерческая редакция NGINX Plus. Для обычной эксплуатации iEXExchanger важнее активная конфигурация и доступные модули конкретного сервера. Точный состав показывает `nginx -V`; перед передачей вывода удалите пути и параметры, раскрывающие инфраструктуру.

## Как проходит запрос

```mermaid
flowchart LR
    A["Браузер клиента"] --> B["Cloudflare, если включён"]
    B --> C["Nginx: домен, HTTPS и путь"]
    C --> D["Статический файл"]
    C --> E["SSR Node.js"]
    C --> F["PHP-FPM"]
    C --> G["Reverb WebSocket"]
```

Nginx выбирает блок `server` по домену и порту, затем правило `location` по пути. Директива `proxy_pass` передаёт HTTP-запрос upstream-процессу, а `fastcgi_pass` используется для PHP-FPM. Официальное описание reverse proxy приведено в [документации Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/).

## Из чего состоит конфигурация

| Элемент      | Назначение                                                 |
| ------------ | ---------------------------------------------------------- |
| `nginx.conf` | Основные параметры и подключение дополнительных файлов     |
| `http`       | Общие правила HTTP, журналы, форматы, сжатие и ограничения |
| `server`     | Виртуальный хост для конкретного домена и порта            |
| `location`   | Правило для пути или типа запроса                          |
| `upstream`   | Именованная группа внутренних процессов                    |
| `include`    | Подключение отдельного файла конфигурации                  |

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

## Что важно для iEXExchanger

* `ваш_домен` передаёт обычные страницы клиентскому SSR.
* Подтверждённые API-пути направляются в серверную часть.
* `app.ваш_домен` обслуживает панель и PHP-приложение.
* WebSocket-путь должен передавать заголовки Upgrade и Connection.
* PHP, SSR, Redis, PostgreSQL и Reverb слушают только внутренние адреса.
* Реальный IP посетителя принимается только от доверенного прокси.
* Закрытые файлы, файл окружения и приватные каталоги никогда не отдаются публично.

Не создавайте широкое правило по знакомому префиксу без сверки текущей поставки. Ошибка порядка `location` может передать API в SSR, клиентскую страницу — в PHP, а закрытый файл — в статическую выдачу.

## Безопасное изменение

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

Reload перечитывает корректную конфигурацию без полной перезагрузки сервера. Если `nginx -t` сообщает ошибку, не выполняйте reload и не исправляйте несколько строк наугад.

## Частые состояния

| Проявление                | Возможная причина                                      | Следующий шаг                                            |
| ------------------------- | ------------------------------------------------------ | -------------------------------------------------------- |
| 404                       | Неверный `location`, root или маршрут приложения       | Сверить активный vhost и точный URL                      |
| 413                       | Лимит тела запроса меньше загружаемого файла           | Согласовать Nginx, PHP и ограничение формы               |
| 502                       | Upstream не запущен, неверный порт или сокет           | Проверить PM2, PHP-FPM, Reverb и журнал Nginx            |
| 504                       | Upstream не ответил вовремя                            | Найти медленный компонент, а не только увеличить timeout |
| Цикл перенаправлений      | Неверно передан протокол или конфликтуют правила HTTPS | Проверить Cloudflare, Nginx и доверенные заголовки       |
| WebSocket не подключается | Нет Upgrade или указан неверный upstream               | Проверить путь Reverb и заголовки proxy                  |

## Что Nginx не заменяет

Nginx не заменяет:

* Cloudflare и пограничную DDoS-защиту;
* PM2 для поддержания Node.js-процесса;
* Supervisor для Laravel-процессов;
* PHP-FPM для выполнения PHP;
* базу данных и Redis;
* логику безопасности самого приложения;
* резервное копирование и мониторинг.

Подробная карта доменов и маршрутов приведена в [«Архитектуре Nginx»](/knowledge-base/servery-domeny-i-infrastruktura/overview/what-is-nginx/architecture.md), сертификаты и рабочая конфигурация — в [«Конфигурации Nginx и SSL»](/knowledge-base/servery-domeny-i-infrastruktura/overview/what-is-nginx/configuration-and-ssl.md), а разбор ошибок — в [«Диагностике Nginx»](/knowledge-base/servery-domeny-i-infrastruktura/overview/what-is-nginx/troubleshooting.md). Базовое управление Nginx описано в [официальном руководстве](https://nginx.org/en/docs/beginners_guide.html).


---

# 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/knowledge-base/servery-domeny-i-infrastruktura/overview/what-is-nginx.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.
