Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
Клиенты
Вики
Затраты
Отчёты и аналитика
FAQ
Типы отчётов
Тип отчёта «Акты»
Тип отчёта «Баланс отсутствий»
Тип отчёта «Бронирование»
Тип отчёта «Биллинг»
Тип отчёта «Версии проектов»
Тип отчёта «Задачи»
Тип отчёта «Задачи проектов»
Тип отчёта «Затраты»
Тип отчёта «Заявки на затраты»
Тип отчёта «Заявки на отсутствия»
Тип отчёта «История ставок пользователей»
Тип отчёта «Запросы ресурсов»
Тип отчёта «Навыки пользователей»
Тип отчёта «Пользователи»
Тип отчёта «Проводки»
Тип отчёта «Ресурсный план»
Тип отчёта «Ресурсный план (по версиям)»
Тип отчёта «Проекты»
Тип отчёта «Сертификаты пользователей»
Тип отчёта «Счета»
Тип отчёта «Счета (строки)»
Тип отчёта «Таймшиты»
Тип отчёта «Таймшиты детально»
Тип отчёта «Финансы»
Тип отчёта «Структура работ»
Тип отчёта «Центры затрат проектов»
Тип отчёта «Задания воркфлоу»
Тип отчета Клиенты
Тип отчета «Контакты»
Тип отчёта «Сделки»
Тип отчёта «История состояний сделок»
Тип отчёта «Взаимодействия»
Использование отчётов
Группировка данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Особые колонки отчётов с временными рядами
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
Настройка и администрирование
Типовой порядок настройки системы
Язык формул и выражений
On-premises
API
История изменений
Термины и определения

Маршрутизация сервисов Timetta по FQDN

Обновлено: 14.04.2026

В текущей конфигурации Docker Compose внешний доступ пользователей к системе организуется через единый порт 443/TCP.

Входной точкой выступает контейнер nginx-proxy. Он принимает HTTPS-запросы и маршрутизирует их к нужному внутреннему сервису по доменному имени, используя заголовок Host.

Требования к доменной конфигурации

Для корректной работы схемы доступа через порт 443 необходимо заранее настроить DNS-записи для поддоменов.

Общая схема доступа

Пользователь обращается к системе по HTTPS, используя один из доменов экземпляра:

  • timetta.domain.com — клиентская часть приложения;
  • api-timetta.domain.com — основной сервис API;
  • auth-timetta.domain.com — сервис аутентификации;
  • ws-timetta.domain.com — хаб WebSockets для уведомлений;
  • reporting-timetta.domain.com — сервис формирования отчётов;
  • scheduler-timetta.domain.com — сервис выполнения задач по расписанию.

Все домены указывают на один внешний IP-адрес и используют порт 443.

Контейнер nginx-proxy перенаправляет запросы во внутреннюю сеть Docker Compose по HTTP на соответствующий сервис.

Маршрутизация запросов

Внутри nginx-proxy используется маршрутизация по параметру server_name.

Соответствие доменов и внутренних сервисов:

  • timetta.domain.com → http://client:80;
  • api-timetta.domain.com → http://api:80;
  • auth-timetta.domain.com → http://passport:80;
  • ws-timetta.domain.com → http://web-socket:80;
  • reporting-timetta.domain.com → http://reporting:80;
  • scheduler-timetta.domain.com → http://scheduler:80.

Связь с конфигурацией приложения

В файлах settings.json и client-settings.json внешние адреса сервисов задаются как HTTPS-адреса на отдельных поддоменах.

client-settings.json

{
  "api": {
    "url": "https://api-timetta.domain.com"
  },
  "passport": {
    "url": "https://auth-timetta.domain.com"
  },
  "websocket": {
    "url": "https://ws-timetta.domain.com"
  }
}

Настройка settings.json

В конфигурации settings.json параметры TokenIssuer и RedirectUris должны указывать на доменное имя сервиса аутентификации.

Не используйте адрес с портом 5401.

Рекомендуется использовать:

https://auth-timetta.domain.com

вместо:

http://<host>:5401

Конфигурация обратного прокси

SSL/TLS-сертификаты

Для работы HTTPS-доступа необходимо настроить SSL/TLS-сертификаты в контейнере nginx-proxy.

Сертификат должен покрывать все используемые домены:

  • timetta.domain.com;
  • api-timetta.domain.com;
  • auth-timetta.domain.com;
  • ws-timetta.domain.com;
  • reporting-timetta.domain.com;
  • scheduler-timetta.domain.com.

Допустимые варианты настройки:

  1. Использовать wildcard-сертификат (*.domain.com).
  2. Использовать сертификат с поддержкой нескольких доменов (SAN-сертификат).

Если используется не wildcard-сертификат, он должен явно включать все перечисленные поддомены.

Сертификаты подключаются к контейнеру nginx-proxy через конфигурацию:

configs:
  - source: proxy_cert
    target: /etc/nginx/ssl/cert.pem
  - source: proxy_key
    target: /etc/nginx/ssl/key.pem

Для публикации сервисов через единый внешний порт 443 необходимо обновить конфигурацию обратного прокси в файле proxy/nginx.conf.

proxy/nginx.conf

events {
    worker_connections 1024;
}

http {
    # Основной параметр для больших файлов
    client_max_body_size 100M;
    # Буферизация и таймауты
    client_body_buffer_size 128k;
    client_body_timeout 300s;

    # Для proxy 
    proxy_read_timeout 300s;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
    #Подключение сертификатов
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    proxy_pass_request_headers on;

    proxy_set_header Authorization $http_authorization;
    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-Host $host;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port 443;

    server {
        listen 80;
        listen [::]:80;
        server_name timetta.domain.com
                    api-timetta.domain.com
                    auth-timetta.domain.com
                    ws-timetta.domain.com
                    reporting-timetta.domain.com
                    scheduler-timetta.domain.com;
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name timetta.domain.com;
        location / {
            proxy_pass http://client:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name api-timetta.domain.com;
        location / {
            proxy_pass http://api:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name auth-timetta.domain.com;
        location / {
            proxy_pass http://passport:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name ws-timetta.domain.com;
        location / {
            proxy_pass http://web-socket:80;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name reporting-timetta.domain.com;
        location / {
            proxy_pass http://reporting:80;
        }
    }

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name scheduler-timetta.domain.com;
        location / {
            proxy_pass http://scheduler:80;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
}

Настройка портов в nginx-proxy

В контейнере nginx-proxy должны быть открыты только внешние порты 443 и 80.

Все пользовательские запросы проходят через обратный прокси с маршрутизацией по доменному имени.

nginx-proxy:
  container_name: nginx-proxy
  image: nginx
  ports:
    - "443:443"
    - "80:80"
  configs:
    - source: proxy_config
      target: /etc/nginx/nginx.conf
    - source: proxy_cert
      target: /etc/nginx/ssl/cert.pem
    - source: proxy_key
      target: /etc/nginx/ssl/key.pem
  depends_on:
    - api
    - consumer
    - passport
    - web-socket
    - scheduler
    - client

Содержание

Требования к доменной конфигурации Общая схема доступа Маршрутизация запросов Связь с конфигурацией приложения client-settings.json Настройка settings.json Конфигурация обратного прокси SSL/TLS-сертификаты proxy/nginx.conf Настройка портов в nginx-proxy
Ничего не найдено

Перейти на русскую версию?