> 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/configuration-and-ssl.md).

# Конфигурация Nginx и SSL

Примеры ниже показывают назначение директив, а не готовый файл для слепой вставки. FASTPANEL уже создаёт `server`-блоки, обработку PHP и пути сертификатов. Добавляйте только недостающие `location` в поддерживаемый панелью пользовательский include.

## Резервная копия и проверка

Определите точный файл `<CONF_FILE>` из активного `nginx -T`, затем создайте копию:

```bash
sudo cp --preserve=all <CONF_FILE> <CONF_FILE>.before-change
sudo nginx -t
```

`<CONF_FILE>` — один проверенный конфигурационный файл, а не каталог и не маска. Если исходный тест не проходит, не вносите новое изменение: сначала сохраните ошибку и восстановите корректное исходное состояние.

## Клиентский SSR

Типовое правило передаёт клиентские страницы локальному процессу:

```nginx
location / {
    proxy_pass http://127.0.0.1:<SSR_PORT>;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
```

`<SSR_PORT>` должен совпадать с фактическим локальным портом процесса PM2. Убедитесь, что процесс слушает `127.0.0.1`, а не публичный интерфейс.

## API и статические файлы

Для подтверждённых API-путей задайте отдельные `location` с ожидаемым изменением или сохранением префикса. Поведение `proxy_pass` зависит от наличия URI в директиве, поэтому проверьте конечный путь на backend, а не только ответ 200. Правила описаны в [официальной документации proxy\_pass](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass).

Статический `alias` должен указывать только на разрешённый публичный каталог. Добавляйте завершающий `/` согласованно в `location` и `alias`, запрещайте листинг и не направляйте запрос в корень серверного проекта.

## Канал реального времени

Для подтверждённого WebSocket-пути нужны явные заголовки переключения протокола:

```nginx
location <REALTIME_PATH> {
    proxy_pass http://127.0.0.1:<REALTIME_PORT>;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 60s;
}
```

`<REALTIME_PATH>` и `<REALTIME_PORT>` берите из текущей конфигурации приложения. Заголовки `Upgrade` и `Connection` являются hop-by-hop и должны передаваться явно; это подтверждает [официальная инструкция Nginx WebSocket proxying](https://nginx.org/en/docs/http/websocket.html).

Не увеличивайте тайм-аут бесконечно. Reverb должен отправлять активность, а Nginx — освобождать мёртвые соединения.

## Сертификаты сайтов

В FASTPANEL откройте SSL-настройки карточки каждого сайта и выпустите сертификат для фактических имён. До выпуска DNS должен указывать на сервер, а проверочный запрос не должен блокироваться редиректом, сетевым экраном или ошибочным правилом Cloudflare.

Для Cloudflare допускаются:

* публично доверенный сертификат, например автоматически обновляемый FASTPANEL;
* Cloudflare Origin CA, если браузер не подключается к origin напрямую.

После установки проверьте срок, имя, полную цепочку и автоматическое продление. В Cloudflare используйте Full (strict), как описано в [инструкции переноса](/learn/server-domeny-i-infrastruktura/overview/change-plan/cloudflare-cutover.md).

## Применение и возврат

После правки:

```bash
sudo nginx -t
sudo systemctl reload nginx
```

Проверьте клиентский домен, панель, API, статический файл и WebSocket. При ошибке верните резервную копию:

```bash
sudo cp --preserve=all <CONF_FILE>.before-change <CONF_FILE>
sudo nginx -t
sudo systemctl reload nginx
```

Не выполняйте reload, если тест возвращает ошибку. Не удаляйте резервную копию до завершения сквозной проверки.


---

# 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/configuration-and-ssl.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.
