# Цель проекта `nb proxy`

Если говорить только об основном процессе, то достаточно запомнить эти 3 команды:

```bash
nb proxy nginx use docker
nb proxy nginx generate --env test2 --host c.local.nocobase.com
nb proxy nginx reload
```

В большинстве сценариев вы используете `nb proxy`, по сути, это три шага:

1. Сначала используйте `use`, чтобы выбрать режим работы текущего провайдера.
2. Затем используйте `generate` для создания конфигурации записи в соответствии с окружением и именем домена.
3. Наконец, используйте `reload`, чтобы конфигурация вступила в силу.

Если вы используете Caddy, просто замените `nginx` в команде на `caddy`. Если Nginx установлен непосредственно на компьютере, просто замените `docker` на `local`.

Это также тот опыт, который больше всего хочет предоставить этот уровень `nb proxy`: вам не нужно сначала вникать в детали конфигурации Nginx или Caddy, просто подключите вход в соответствии с фиксированным процессом.

## Почему достаточно сначала запомнить эти 3 пункта?

Потому что проблема, решаемая `nb proxy`, на самом деле очень конвергентна: **Предоставить приложению стабильный вход для внешнего доступа. **

Если вы уже видели [Обзор развертывания производственной среды](../production/index.md), вы можете запомнить его отдельно от `nb app autostart` следующим образом:

- `nb app autostart` отвечает за то, «как возобновить работу приложения после перезагрузки компьютера».
- `nb proxy` отвечает за то, «как приложение может обеспечить стабильный внешний доступ через Nginx или Caddy».

Таким образом, в наиболее распространенном процессе развертывания `nb proxy` не требует большого количества умов. Чаще всего это:

- Выбор режима работы
- Генерировать конфигурацию
- Перезагрузка вступает в силу

Достаточно.

## Что делают эти три шага?

### `use`

`use` решает проблему «как управлять агентом в данный момент».

например:

- `nb proxy nginx use docker`
- `nb proxy nginx use local`

Вы можете думать об этом как о выборе драйвера по умолчанию для текущего провайдера. Следующие команды `start`, `reload` и `status` будут работать таким образом.

### `generate`

`generate` решает проблему «отрисовки конфигурации записи в соответствии с текущим окружением».

например:

```bash
nb proxy nginx generate --env test2 --host c.local.nocobase.com
```

На этом этапе информация в env будет объединена с параметрами, необходимыми входному уровню, для создания пригодной для использования конфигурации прокси. Наиболее важными входными данными здесь обычно являются:

- `--env`: какой CLI удалось раскрыть env
- `--host`: к какому доменному имени привязать

Другими словами, `generate` управляет продуктами конфигурации, а не статусом процесса.

### `reload`

`reload` решает проблему «сделать вновь созданную конфигурацию по-настоящему эффективной».

```bash
nb proxy nginx reload
```

Такое разделение имеет прямую выгоду: генерация конфигурации и действия процесса не смешиваются. Когда вы меняете имя домена, порт или общедоступный путь, сначала создайте его заново, а затем решите, чтобы оно вступило в силу. Весь процесс будет более понятен.

## Почему он должен быть оформлен как `use → generate → reload`

Потому что эти три шага как раз соответствуют трем наиболее устойчивым действиям входного слоя:

- Сначала решите, как запустить агент
- Затем решите, какую запись создать для какой среды.
-Наконец пусть конфигурация вступит в силу

Если вы поместите все эти шаги в команду черного ящика, окажется, что на поверхности команд меньше. Однако при возникновении проблемы сложно определить, неправильно ли выбран драйвер, неправильно сгенерирована конфигурация или не перезагружен агент.

Теперь, после такой разборки, путь расследования станет более прямым:

- `use` Если не так, просто вырежьте драйвер
- `generate` неверен, заново создайте конфигурацию.
- Конфигурация правильная, но она еще не вступила в силу, просто `reload`

## Зачем нам отдельный `nb proxy`

Потому что `nb proxy` хочет унифицировать не какой-то конкретный файл конфигурации Nginx, а общие действия начального уровня.

Обычно вас действительно волнует не следующее:

-По какому пути находится файл конфигурации?
- Различия в командах между Nginx и Caddy.
- Операционные различия между локальным и докерным

Больше всего вас беспокоит:

- Как мне раскрыть эту среду?
- Как мне изменить свое доменное имя?
- Как мне сделать так, чтобы новая конфигурация вступила в силу?

`nb proxy` — объединить эти действия в один и тот же набор записей CLI. Таким образом, если вы сначала запомните основной процесс, вы уже сможете охватить большинство сценариев. Только если вы хотите продолжить устранение неполадок или вам нужна специальная настройка, просто загляните на собственную страницу провайдера.

## Общий

- `nb proxy` Основное использование разума – `use → generate → reload`.
- Большинству пользователей достаточно запомнить эти 3 команды
- Целью его дизайна является не скрыть все детали, а сначала исправить наиболее распространенные процессы входного уровня.

Если вы хотите продолжить изучение конкретных команд, вы можете перейти непосредственно к [`nb proxy`](../../api/cli/proxy/index.md). Если вы готовы подключиться к официальному входу, вы также можете продолжить просмотр [Обратного прокси](../production/reverse-proxy/index.md).
