Инструкция предоставляет базовую конфигурацию для удобного управления проксированием серверов с помощью Angie.

Angie — современный веб-сервер, созданный бывшими разработчиками nginx с открытым исходным кодом (лицензия BSD).
Он сочетает проверенную архитектуру nginx с новыми возможностями:

  • ✅ Поддержка HTTP/3 (клиент ↔ сервер независимо)

  • ✅ Встроенный Docker-модуль для автоматического управления сервисами

  • ACME-клиент — автоматическое получение TLS-сертификатов

  • REST API + Prometheus — мониторинг и метрики

  • Console Light — веб-интерфейс для наблюдения за сервером

  • ✅ Легковесность, высокая производительность, минималистичная конфигурация

Мы используем Angie только как обратный прокси — без хостинга файлов.


Вместо того чтобы:

  • Открывать десятки портов

  • Давать пользователям прямой доступ к сервисам

  • Управлять сертификатами вручную

Обратный прокси: два уровня инфраструктуры

1. Базовое проксирование (Стандарт)

Принимает весь трафик на порт 443, распределяет запросы по сервисам (например, site1.example.com → сервер А, site2.example.com → сервер Б). Скрывает внутреннюю архитектуру, централизует SSL и защиту.

2. Прокси как шлюз доступа

IP-фильтрация (просто):

  • Пользователи обращаются только к IP прокси через порт 443.

  • Пример:

SSO (гибко):

  • Единый вход через CASdoor + Angie: пользователь получает доступ только к тем сервисам в изолированном VLAN, на которые у него есть права.

Преимущества:

  • Для сервисов в одном VLAN не нужны отдельные сетевые правила для пользователей из других VLAN.

  • Достаточно открыть один порт 443 до прокси — фильтрация и SSO (через CASdoor или аналоги) настраиваются централизованно.


Итог: Прокси обеспечивает базовую безопасность (уровень 1) и заменяет сложные ACL единым шлюзом для доступа к сервисам в VLAN (уровень 2).

Мы создаём единую точку входа:

  • 🔒 Только порт 443 открыт наружу

  • 🌐 Все сервисы доступны по поддоменам (grafana.test, whoami.test)

  • 🛡️ Вся инфраструктура изолирована в Docker-сетях

  • 🔄 Новые сервисы добавляются автоматически через лейблы


Три способа проксирования

Способ

Особенности

1. С хоста

proxy_pass http://192.168.88.7:8080

2. Через Docker DNS

proxy_pass http://whoami;

3. Через Docker-модуль

Управление через лейблы в yaml, - "angie.http.upstreams.docker_dmodulwhoami.port=80"


📁 Структура каталогов

front-proxy/                 # Основной каталог прокси
├── angie.conf              # Главный конфиг Angie
├── compose.yaml            # Docker Compose для Angie + Docker Socket Proxy
├── conf.d/                 # Общие настройки: proxy, security, limits
├── genloc/                 # Общие location-правила (favicon, robots.txt и т.д.)
├── http.d/                 # Server-блоки для каждого сервиса
└── ssl/                    # TLS-сертификаты (локальные или ACME)

# Тестовые сервисы (для демонстрации трёх способов проксирования)
hostwhoami/                 # Способ 1: проксирование с хоста
└── hostwhoami.yaml
dockerwhoami/               # Способ 2: через Docker DNS
└── dockerwhoami.yaml
dmodulwhoami/               # Способ 3: через Docker-модуль
└── dmodulwhoami.yaml

Главный конфиг Angie

vim angie.conf
# Автоматическое количество рабочих процессов (по числу CPU)
worker_processes auto;

# Увеличенный лимит открытых файловых дескрипторов на процесс
worker_rlimit_nofile 65535;

events {
    # Разрешить приёму одного worker'а нескольких соединений за раз
    multi_accept on;
    
    # Максимальное число одновременных соединений на worker
    worker_connections 65535;
}

http {
    #Подключение к Docker API через proxy
    docker_endpoint http://docker-socket-proxy:2375;
    
    # Максимальный размер буфера для ответов Docker API
    # (достаточно для ~50 контейнеров; увеличить при большом количестве)
    docker_max_object_size 128k;

    # Кодировка по умолчанию
    charset utf-8;
    
    # Оптимизации передачи файлов
    sendfile on;        # Использовать системный вызов sendfile()
    tcp_nopush on;      # Отправлять заголовки целиком
    tcp_nodelay on;     # Отключить алгоритм Нейгла для интерактивных соединений
    
    # Безопасность: скрыть версию сервера
    server_tokens off;
    
    # Не логировать ошибки 404
    log_not_found off;
    
    # Увеличенный размер хеш-таблицы для MIME-типов
    types_hash_max_size 2048;
    
    # Максимальный размер тела запроса от клиента
    client_max_body_size 16M;

    # MIME-типы
    include mime.types;
    default_type application/octet-stream;

    # Логирование
    access_log /var/log/angie/access.log;
    error_log /var/log/angie/error.log warn;

    # Ограничение частоты запросов (защита от брутфорса)
    limit_req_log_level warn;
    limit_req_zone $binary_remote_addr zone=login:10m rate=10r/m;

    # Настройки SSL/TLS
    ssl_session_timeout 1d;           # Время жизни SSL-сессии
    ssl_session_cache shared:SSL:10m; # Общая память для кэширования сессий
    ssl_session_tickets off;          # Отключить session tickets (безопаснее)

    # Только современный протокол TLS 1.3
    ssl_protocols TLSv1.3;

    # OCSP Stapling (требует доверенного CA)
    ssl_stapling off;        # Включить, если будет свой CA
    ssl_stapling_verify off; # Включить, если будет свой CA

    # Общие переиспользуемые настройки (proxy, security и т.д.)
    include /etc/angie/conf.d/*.conf;

    # Серверные блоки для каждого сервиса
    include /etc/angie/http.d/*.conf;
}

Docker Compose для Angie + Docker Socket Proxy

vim compose.yaml
services:
  docker-socket-proxy:
    # Безопасный прокси для Docker Socket — даёт Angie доступ только на чтение списка контейнеров
    image: tecnativa/docker-socket-proxy:v0.4.2
    container_name: docker-socket-proxy
    restart: unless-stopped
    # Требуется privileged для доступа к /var/run/docker.sock в некоторых системах
    privileged: true
    volumes:
      # Монтируем сокет только на чтение (:ro) — нельзя управлять контейнерами
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      CONTAINERS: 1   # Чтение списка контейнеров
      NETWORKS: 1     # Чтение сетевых настроек (для получения IP)
      EVENTS: 1       # Подписка на события (запуск/остановка контейнеров)
    networks:
      - front-proxy

  front-proxy:
    # Основной обратный прокси-сервер
    image: docker.angie.software/angie:1.11.2
    container_name: front-proxy
    restart: unless-stopped
    environment:
      - TZ=UTC-5
    ports:
      # Открываем только стандартные порты HTTP/HTTPS
      - "80:80"
      - "443:443"
    volumes:
      # Все конфиги монтируются из текущего каталога
      - ./angie.conf:/etc/angie/angie.conf:ro
      - ./http.d/:/etc/angie/http.d/:ro
      - ./conf.d:/etc/angie/conf.d/:ro
      - ./genloc:/etc/angie/genloc/:ro
      - ./ssl:/etc/angie/ssl/:ro
    networks:
      - front-proxy   # Подключаемся к той же сети, что и docker-socket-proxy
      - app-net      # Подключиться ко всем сетям, где есть сервисы, иначе Angie их не увидит

networks:
  front-proxy:
    # Используем существующую сеть или создаём новую с заданной подсетью
    name: front-proxy
    external: true
  app-net:
    name: app-net
    external: true

Заглушка для первого запуска http.d/default.conf

vim default.conf
# Заглушка для первого запуска
# Обеспечивает минимальный server-блок, чтобы Angie запустился
# Будет обрабатывать только запросы к IP или неизвестным доменам
# Реальные сервисы должны иметь свои server-блоки с конкретными server_name

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # Заглушка для неизвестных доменов
    return 444;  # закрывает соединение без ответа
}

Запускаем и логах видно, что всё работает корректно


🛠️ Общие конфигурационные файлы

Чтобы не дублировать настройки в каждом server-блоке, используем переиспользуемые фрагменты.

conf.d/proxy.conf — стандартные заголовки проксирования

proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;

proxy_http_version 1.1 — поддержка keep-alive и WebSocket
Upgrade + Connection — корректная работа WebSocket и HTTP/2
X-Real-IP, X-Forwarded-* — передача оригинальных данных клиента бэкенду
(без этого все запросы будут приходить «от Angie»)

Включается в location через include /etc/angie/conf.d/proxy.conf;

conf.d/security.conf — безопасные HTTP-заголовки

add_header X-Frame-Options           "SAMEORIGIN" always;
add_header X-XSS-Protection          "1; mode=block" always;
add_header X-Content-Type-Options    "nosniff" always;
add_header Referrer-Policy           "no-referrer-when-downgrade" always;
add_header Content-Security-Policy   "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Включается в server через include /etc/angie/conf.d/security.conf;

genloc/general-location.conf — общие правила для всех сервисов

# правила отключают логирование для служебных файлов favicon.ico и robots.txt, чтобы очистить логи, и блокируют доступ ко всем скрытым файлам (кроме .well-known)
location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    log_not_found off;
    access_log off;
}

# Запрет .файлов (кроме .well-known)
location ~ /\.(?!well-known) {
    deny all;
}

Включается в server через include /etc/angie/genloc/general-location.conf;


🔐 Локальный TLS-сертификат для тестовых доменов

Для работы по HTTPS наши тестовые сервисы используют следующие домены:

  • hostwhoami.test — проксирование с хоста

  • dockerwhoami.test — проксирование через Docker DNS

  • dmodulwhoami.test — автоматическое управление через Docker-модуль

Чтобы все они работали по HTTPS, мы генерируем один wildcard-сертификат на *.test, который покрывает любой поддомен зоны .test.

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

  • Алгоритм: ECDSA на кривой prime256v1 (P-256) — безопаснее и быстрее RSA

  • Поддержка wildcard *.test через subjectAltName

  • Срок действия: 10 лет

Генерация сертификата

Выполните в каталоге front-proxy/:

mkdir -p ssl
openssl req -x509 \
  -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 \
  -days 3650 \
  -nodes \
  -keyout ssl/server.key \
  -out ssl/server.crt \
  -subj "/CN=*.test" \
  -addext "subjectAltName=DNS:*.test,DNS:test"

✅ Этот сертификат будет автоматически использоваться тестовыми сайтами через общие директивы в их server-блоках:

ssl_certificate /etc/angie/ssl/server.crt;  
ssl_certificate_key /etc/angie/ssl/server.key;

🧪 Практические примеры: два классических способа проксирования

Все тестовые сервисы используют образ traefik/whoami — легковесный HTTP-сервер, который выводит информацию о запросе (IP, заголовки, метод и т.д.).

🔒 Оба способа работают по HTTPS (https://*.test) и включают:

  • Автоматическое перенаправление с HTTP → HTTPS

  • Безопасные заголовки

  • Защиту от утечки .файлов

  • Логирование ошибок в отдельный файл


Не используйте proxy_pass http://имя\_контейнера; или домена напрямую!
Это создаёт статический upstream, который:

  • Требует существования контейнера/домена при старте Angie

  • Если сервис недоступен — весь прокси не запустится

  • Ломает динамический резолвинг для других сервисов

Плохо (статический резолвинг):

proxy_pass http://dockerwhoami:80;

Хорошо (динамический резолвинг):

resolver 127.0.0.11 valid=10s;  # Docker DNS
set $backend dockerwhoami;
proxy_pass http://$backend:80;

Способ 1: Проксирование сервиса, запущенного на хосте (hostwhoami/)

Когда использовать:
Когда бэкенд не находится в Docker-сети прокси, например:

  • Сервис запущен на хосте (на порту 8080, 3000 и т.д.)

  • Приложение работает на другом сервере во внутренней сети

  • Старый сервис, который нельзя или не нужно интегрировать в Docker-сеть

💡 Поскольку порт 80 на хосте уже занят Angie, сервис запускается на порту 8080, и именно его проксирует Angie.

hostwhoami/hostwhoami.yaml

services:
  hostwhoami:
    image: traefik/whoami
    container_name: hostwhoami
    restart: unless-stopped
    ports:
      - "8080:80"  # ← проброс 8080 хоста → 80 контейнера

🔒 Контейнер не подключён к сети front-proxy — он доступен только через хостовой порт 8080.

http.d/hostwhoami.conf

# HTTPS-сервер для hostwhoami.test
server {
    # Слушаем порт 443 (HTTPS) для IPv4 и IPv6
    listen 443 ssl;
    listen [::]:443 ssl;
    
    # Включаем HTTP/2 для улучшения производительности
    http2 on;

    # Доменное имя сервиса
    server_name hostwhoami.test;

    # Пути к TLS-сертификату и приватному ключу
    ssl_certificate /etc/angie/ssl/server.crt;
    ssl_certificate_key /etc/angie/ssl/server.key;

    # Включаем безопасные HTTP-заголовки
    include /etc/angie/conf.d/security.conf;
    
    # Отдельный файл логов ошибок для этого сервиса
    error_log /var/log/angie/hostwhoami.test.error.log warn;

    # Основной location — проксируем все запросы
    location / {
        # Используем DNS-резолвер Docker, valid=10s — кэшировать результаты на 10 секунд
        resolver 127.0.0.11 valid=10s;

        # Сохраняем IP-адрес целевого сервера в переменную
        # Такой подход работает одинаково и для доменов, и для IP
        set $backend 192.168.88.7;

        # Проксируем запросы на указанный адрес и порт
        # Даже если сервер временно недоступен — Angie запустится и будет работать для других сервисов
        proxy_pass http://$backend:8080;
        
        # Передаём стандартные заголовки проксирования
        include /etc/angie/conf.d/proxy.conf;
    }

    # Общие правила для всех сервисов:
    include /etc/angie/genloc/general-location.conf;
}

# Автоматическое перенаправление с HTTP на HTTPS
server {
    # Слушаем порт 80 (HTTP) для IPv4 и IPv6
    listen 80;
    listen [::]:80;
    
    # Доменное имя сервиса
    server_name hostwhoami.test;
    
    # Перенаправляем все HTTP-запросы на HTTPS с тем же URL
    return 301 https://$host$request_uri;
}

Преимущество: максимальная гибкость — можно проксировать любой сервис.

После добавления или изменения конфигурационных файлов в http.d/ необходимо перезагрузить контейнер front-proxy, чтобы Angie применил новые настройки.


Способ 2: Проксирование через Docker DNS (dockerwhoami/)

Когда использовать:
Когда сервис запущен в той же Docker-сети, что и Angie.

Безопасность:

  • Трафик никогда не покидает Docker-сеть front-proxy

  • Нет необходимости открывать порты на хосте

  • Полная сетевая изоляция

dockerwhoami/dockerwhoami.yaml

services:
  dockerwhoami:
    image: traefik/whoami
    container_name: dockerwhoami
    restart: unless-stopped
    networks:
      - front-proxy

networks:
  front-proxy:
    name: front-proxy
    external: true

http.d/dockerwhoami.conf

# HTTPS-сервер для dockerwhoami.test
server {
    # Слушаем порт 443 (HTTPS) для IPv4 и IPv6
    listen 443 ssl;
    listen [::]:443 ssl;
    
    # Включаем HTTP/2 для улучшения производительности
    http2 on;

    # Доменное имя сервиса
    server_name dockerwhoami.test;

    # Пути к TLS-сертификату и приватному ключу
    ssl_certificate /etc/angie/ssl/server.crt;
    ssl_certificate_key /etc/angie/ssl/server.key;

    # Включаем безопасные HTTP-заголовки
    include /etc/angie/conf.d/security.conf;
    
    # Отдельный файл логов ошибок для этого сервиса
    error_log /var/log/angie/dockerwhoami.test.error.log warn;

    # Основной location — проксируем все запросы
    location / {
        # Используем DNS-резолвер Docker, valid=10s — кэшировать результаты на 10 секунд
        resolver 127.0.0.11 valid=10s;

        # Сохраняем имя контейнера в переменную
        set $backend dockerwhoami;

        # Проксируем на контейнер с именем "dockerwhoami" в той же Docker-сети
        # Даже если сервер временно недоступен — Angie запустится и будет работать для других сервисов
        proxy_pass http://$backend:80;
        
        # Передаём стандартные заголовки проксирования
        include /etc/angie/conf.d/proxy.conf;
    }

    # Общие правила для всех сервисов:
    include /etc/angie/genloc/general-location.conf;
}

# Автоматическое перенаправление с HTTP на HTTPS
server {
    # Слушаем порт 80 (HTTP) для IPv4 и IPv6
    listen 80;
    listen [::]:80;
    
    # Доменное имя сервиса
    server_name dockerwhoami.test;
    
    # Перенаправляем все HTTP-запросы на HTTPS с тем же URL
    return 301 https://$host$request_uri;
}

Преимущество: безопасность, простота, отказоустойчивость.

После добавления или изменения конфигурационных файлов в http.d/ необходимо перезагрузить контейнер front-proxy, чтобы Angie применил новые настройки.


🧪 Практический пример: через Docker-модуль

Способ 3: Автоматическое проксирование через Docker-модуль (dmodulwhoami/)

  • Angie подключается к Docker API через Socket Proxy

  • При запуске контейнера Angie автоматически читает его лейблы

  • Контейнер может находиться в любой Docker-сети, доступной Angie

  • Сервер мгновенно добавляется в upstream без перезагрузки

Главное преимущество:

  • Добавление/удаление сервисов работает без перезагрузки Angie

  • Неважен порядок запуска — даже если контейнер появится позже, всё заработает

  • Если сервис упадёт — он автоматически исчезнет из upstream 📚 Официальная документация

dmodulwhoami/dmodulwhoami.yaml

services:
  dmodulwhoami:
    image: traefik/whoami
    container_name: dmodulwhoami
    restart: unless-stopped
    networks:
      - app-net
    labels:
      # Указываем, что контейнер должен быть добавлен в upstream "docker_dmodulwhoami"
      - "angie.http.upstreams.docker_dmodulwhoami.port=80"
      # Явно указываем, из какой сети брать IP
      - "angie.network=app-net"

networks:
  app-net:
    name: app-net

conf.d/00-upstreams-docker.conf

# Upstream, управляемый Docker-модулем
upstream docker_dmodulwhoami {
    zone docker_dmodulwhoami 64k;  # обязательная зона разделяемой памяти
}

http.d/dmodulwhoami.conf

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;

    server_name dmodulwhoami.test;

    ssl_certificate /etc/angie/ssl/server.crt;
    ssl_certificate_key /etc/angie/ssl/server.key;

    include /etc/angie/conf.d/security.conf;
    error_log /var/log/angie/dmodulwhoami.test.error.log warn;

    location / {
        proxy_pass http://docker_dmodulwhoami;  # ← upstream управляется модулем
        include /etc/angie/conf.d/proxy.conf;
    }

    include /etc/angie/genloc/general-location.conf;
}

server {
    listen 80;
    listen [::]:80;
    server_name dmodulwhoami.test;
    return 301 https://$host$request_uri;
}

— сервис https://dmodulwhoami.test становится доступен мгновенно, без перезагрузки прокси.

🖥️ Подключение панели мониторинга Console Light

Console Light — встроенная веб-панель мониторинга Angie, которая отображает ключевые показатели нагрузки и производительности в реальном времени без перезагрузки сервера.

Преимущества консоли:

  • Мониторинг всех HTTP/TCP-серверов и апстримов

  • Отслеживание состояния контейнеров в Docker-сетях

  • Визуализация трафика, соединений и времени отклика

  • Управление конфигурацией без перезагрузки (в Angie PRO)

  • Не требует внешних инструментов — работает на базе API Angie

Веб-панель мониторинга Console Light


🔧 Установка и настройка Console Light

1. Создание пользователя для доступа к консоли

Сначала создайте каталог для хранения паролей и сгенерируйте файл .htpasswd:

mkdir -p auth
htpasswd -c auth/.htpasswd admin

В процессе выполнения команды будет предложено ввести пароль для пользователя admin.

2. Добавление конфигурации в Docker Compose

Добавьте монтирование файла аутентификации в compose.yaml:

services:
  front-proxy:
    # ... остальные настройки
    volumes:
      # ... остальные тома
      - ./auth/.htpasswd:/etc/angie/.htpasswd:ro

3. Создание конфигурации для консоли

Создайте файл http.d/console.conf со следующим содержимым:

# HTTPS-сервер для console.test
server {
    # Слушаем порт 443 (HTTPS) для IPv4 и IPv6
    listen 443 ssl;
    listen [::]:443 ssl;

    # Включаем HTTP/2 и HTTP/3 для улучшения производительности
    http2 on;
    http3 on;

    # Доменное имя панели мониторинга
    server_name console.test;

    # Пути к TLS-сертификату и приватному ключу
    ssl_certificate /etc/angie/ssl/server.crt;
    ssl_certificate_key /etc/angie/ssl/server.key;

    # Ограничение доступа только по IP-адресу
    allow 192.168.*.*;     # разрешаем доступ по конкретному IP
    deny all;              # запрещаем доступ со всех остальных адресов

    # Отдельный файл логов ошибок для панели
    error_log /var/log/angie/console.test.error.log warn;

    # Активируем мониторинг самого сервера консоли
    status_zone console.test;

    # Основной location для Console Light
    location / {
        # Аутентификация для интерфейса
        auth_basic "Angie Console Light";
        auth_basic_user_file /etc/angie/.htpasswd;
        
        # Путь к файлам Console Light
        alias /usr/share/angie-console-light/html/;
        index index.html;

        # API для получения статистики в реальном времени
        location /api/ {
            api /status/;
        }
    }
}

# Автоматическое перенаправление с HTTP на HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name console.test;
    return 301 https://$host$request_uri;
}

4. Добавление метрик в существующие серверы

Чтобы консоль отображала данные по вашим сервисам, добавьте директиву status_zone в каждый серверный блок:

server {
    # ... остальные настройки
    server_name dockerwhoami.test;
    
    # Добавляем метрику для мониторинга
    status_zone dockerwhoami.test;
    
    # ... остальные настройки
}

Полный пример с добавлением метрики

# HTTPS-сервер для dockerwhoami.test
server {
    # Слушаем порт 443 (HTTPS) для IPv4 и IPv6
    listen 443 ssl;
    listen [::]:443 ssl;

    # Включаем HTTP/2 для улучшения производительности
    http2 on;

    # Доменное имя сервиса
    server_name dockerwhoami.test;
    
    # Добавляем метрику для мониторинга
    status_zone dockerwhoami.test;

    # Пути к TLS-сертификату и приватному ключу
    ssl_certificate /etc/angie/ssl/server.crt;
    ssl_certificate_key /etc/angie/ssl/server.key;

    # Включаем безопасные HTTP-заголовки
    include /etc/angie/conf.d/security.conf;

    # Отдельный файл логов ошибок для этого сервиса
    error_log /var/log/angie/dockerwhoami.test.error.log warn;

    # Основной location — проксируем все запросы
    location / {
        # Используем DNS-резолвер Docker, valid=10s — кэшировать результаты на 10 секунд
        resolver 127.0.0.11 valid=10s;

        # Сохраняем имя контейнера в переменную
        set $backend dockerwhoami;

        # Проксируем на контейнер с именем "dockerwhoami" в той же Docker-сети
        # Даже если сервер временно недоступен — Angie запустится и будет работать для других сервисов
        proxy_pass http://$backend:80;

        # Передаём стандартные заголовки проксирования
        include /etc/angie/conf.d/proxy.conf;
    }

    # Общие правила для всех сервисов:
    include /etc/angie/genloc/general-location.conf;
}

# Автоматическое перенаправление с HTTP на HTTPS
server {
    # Слушаем порт 80 (HTTP) для IPv4 и IPv6
    listen 80;
    listen [::]:80;

    # Доменное имя сервиса
    server_name dockerwhoami.test;

    # Перенаправляем все HTTP-запросы на HTTPS с тем же URL
    return 301 https://$host$request_uri;
}

Для мониторинга состояния бэкендов необходимо объявить zone в каждом upstream-блоке.

  • Сервисы через Docker-модуль (уже прописаны) 💡 Пояснение:

  • status_zone в server → мониторинг виртуального хоста

  • zone в upstream → мониторинг бэкендов (состояние, время ответа, ошибки)

5. Для DNS-резолвера добавьте status_zone в общую конфигурацию в angie.conf

http {
    # DNS resolver с мониторингом (один для всего сервера)
    resolver 127.0.0.11 valid=10s status_zone=docker_dns;

    #Подключение к Docker API через proxy 
    docker_endpoint http://docker-socket-proxy:2375;
    # ... остальные настройки

После добавления или изменения конфигурационных файлов необходимо перезагрузить контейнер front-proxy

Дальше:

  1. ACME + Smallstep CA — автоматизация TLS для всех доменов (публичных через Let’s Encrypt и внутренних через локальный CA)

  2. CASdoor — централизованная аутентификация и авторизация

  3. Единая точка входа — безопасный, удобный и управляемый доступ ко всем сервисам