Домены
В этом разделе описано, как настроить домены для ваших приложений в Skitflow, чтобы они были доступны по пользовательским URL-адресам.
Skitflow предоставляет 2 способа добавления домена к вашему сервису:
- Бесплатные домены от Traefik.me
- Купить домен у одного из перечисленных провайдеров
Домены traefik.me бесплатны, но ограничены только HTTP. Если вы хотите настроить HTTPS для бесплатных доменов,
вы можете создать сертификат и использовать его в настройках домена.
Если у вас нет домена, вы можете использовать наши встроенные бесплатные домены от Traefik.me в панели Skitflow без дополнительной настройки, однако это только для HTTP. Для домена с HTTPS вам необходимо приобрести домен у одного из перечисленных провайдеров.
Домены поддерживаются для:
- Приложений
- Docker Compose
Требования (опционально)
Мы рекомендуем это, если вы хотите иметь домен с HTTPS — вам нужно приобрести домен у одного из перечисленных провайдеров.
Добавление домена
Свяжите пользовательские домены с вашим приложением, чтобы сделать его доступным через интернет.
- Host: Доменное имя, которое вы хотите привязать к вашему приложению (например,
api.skitflow.cloud). - Path: Конкретный путь в домене, по которому приложение должно быть доступно.
- Internal Path: Внутренний путь, по которому ваше приложение ожидает получать запросы.
- Strip Path: Удаляет Path из запроса перед пересылкой в приложение.
- Container Port: Порт контейнера, на который домен должен направлять трафик.
- HTTPS: Включите для активации HTTPS для вашего домена, обеспечивая безопасные зашифрованные соединения.
- Certificate: Выберите (letsencrypt) или (None).
О том, как работают Internal Path и Strip Path с использованием middleware Traefik, смотрите примечание ниже.
Примечание
Правильная настройка домена критически важна для доступности и безопасности вашего приложения. Всегда проверяйте настройки домена и убедитесь, что конфигурации DNS правильно указывают на нужные IP-адреса. Включите HTTPS для повышения безопасности и доверия, особенно для продакшен-сред.
Понимание Internal Path и Strip Path
Skitflow использует middleware Traefik для изменения путей запросов перед их передачей в ваше приложение. Эти мощные инструменты позволяют создавать гибкие конфигурации маршрутизации, соответствующие ожидаемой структуре URL вашего приложения.
Предупреждение: Возможные проблемы с редиректами
При использовании middleware Internal Path и Strip Path убедитесь, что ваше приложение правильно настроено для обработки измененных путей. Если ваше приложение генерирует редиректы или абсолютные URL, не совпадающие с ожидаемой структурой путей, это может вызвать циклы перенаправления или нарушение функциональности. Используйте эти middleware с осторожностью и тщательно тестируйте, чтобы убедиться, что ваше приложение корректно работает с преобразованиями путей.
Middleware Internal Path
Middleware Internal Path добавляет префикс к пути запроса перед пересылкой в контейнер. Это полезно, когда ваше приложение ожидает, что все запросы начинаются с определенного базового пути.
Пример:
- Домен:
api.skitflow.cloud - Path:
/v1 - Internal Path:
/backend/api - Запрос:
api.skitflow.cloud/v1/users - Передается в контейнер как:
/backend/api/users
В этом примере middleware добавляет /backend/api в начало пути запроса, что полезно, когда ваше приложение структурировано так, чтобы ожидать запросы по определенному внутреннему пути.
Middleware Strip Path
Middleware Strip Path удаляет указанный префикс пути из запроса перед пересылкой в контейнер. Это идеально подходит, когда вы хотите организовать публичные URL с префиксами, но ваше приложение ожидает чистые пути без префиксов.
Пример:
- Домен:
app.example.com - Path:
/dashboard - Strip Path: Включено
- Запрос:
app.example.com/dashboard/settings - Передается в контейнер как:
/settings
Здесь middleware удаляет префикс /dashboard, поэтому ваше приложение получает запрос так, как если бы он был сделан напрямую к /settings.
Совместное использование Internal Path и Strip Path
Вы можете комбинировать оба middleware для создания сложных сценариев маршрутизации. При включении обоих сначала применяется Strip Path, затем добавляется Internal Path.
Пример:
- Домен:
service.skitflow.cloud - Path:
/public - Strip Path: Включено
- Internal Path:
/app/v2 - Запрос:
service.skitflow.cloud/public/api/users - Обработка:
- Strip Path удаляет
/public:/api/users - Internal Path добавляет
/app/v2:/app/v2/api/users
- Strip Path удаляет
- Итоговый перенаправленный путь:
/app/v2/api/users
Эта мощная комбинация позволяет:
- Удалять публичные префиксы путей, видимые пользователям
- Добавлять внутренние префиксы путей, требуемые вашим приложением
- Создавать четкое разделение между публичной структурой URL и внутренней структурой приложения
Когда использовать каждую опцию
- Только Internal Path: Когда ваше приложение требует определенный базовый путь, отличающийся от публичного URL
- Только Strip Path: Когда вы хотите организованные публичные URL, но ваше приложение ожидает чистые пути
- Оба вместе: Когда вам нужно преобразовать публичные URL для соответствия сложным внутренним структурам приложения
Эти middleware гарантируют, что ваше приложение получает запросы в точном формате, который оно ожидает, независимо от того, как вы структурируете пути публичного домена.
Важное разъяснение о портах контейнера
«Container Port», указанный в настройках домена, используется исключительно для маршрутизации трафика к правильному контейнеру приложения через Traefik и не открывает порт напрямую в интернет. Это принципиально отличается от настроек портов в разделе «Advanced -> Ports», которые используются для прямого открытия портов приложения. Порт контейнера в настройках домена обеспечивает внутреннее направление трафика Traefik к указанному порту внутри контейнера на основе конфигурации домена.
Тип сборки Static
При использовании типа сборки Static или Nixpacks с Publish Directory необходимо использовать порт 80 при создании домена.
Добавление WWW к вашему домену
Если вы хотите добавить WWW к вашему домену, вы можете сделать это, добавив CNAME-запись у вашего DNS-провайдера.
Например, если ваш домен example.com, добавьте CNAME-запись у вашего DNS-провайдера со следующей конфигурацией:
- TYPE: CNAME
- NAME: www
- VALUE: example.com
Создайте домен в Skitflow, используя хост www.example.com.
Теперь в Skitflow перейдите в application -> advanced -> redirects (выберите пресет www to non-www) и нажмите save.
Теперь при каждом обращении к www.example.com будет выполняться перенаправление на example.com.