Скачайте файлы, необходимые для запуска NGINX в контейнере здесь.
Для работы SSL потребуется сертифкат (можно использовать выданные командой DION)
Архив содержит три файла и каталог cer:
Создайте каталог для размещения содержимого архива на целевой виртуальной машине:
mkdir -p /app/dion/dcu-nginx
Поместите содержимое архива в созданный каталог /app/dion/dcu-nginx.
Скопируйте файлы сертификатов *.crt и *.key в диреторию /app/dion/dcu-nginx/certs.
Установите docker и docker-compose (если не установлено).
Рекомендуем воспользоваться официальной инструкцией на сайте Docker.
Загрузите образ из архива в локальный реестр, выполнив команду:
docker load -i /app/dion/dcu-nginx/dcu-nginx.tar
Убедитесь, что образ попал в локальный реестр:
Отредактируйте конфигурационный файл nginx.conf:
nano /app/dion/dcu-nginx/nginx.conf
Укажите локальные IP-адреса всех экземляров dion-crypto-engine (строка 30), а также укажите актуальные имена сертификатов (строка 46):
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
# Настройки соединений
events {
worker_connections 16384;
}
http {
# Базовые настройки
include mime.types;
default_type application/octet-stream;
client_max_body_size 10m;
keepalive_timeout 60;
proxy_intercept_errors on;
# SSL-настройки
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4';
# ssl_prefer_server_ciphers on; # Приоритет безопасных серверных шифров
# Upstream серверы
upstream dc_crypto_engine_upstream {
least_conn;
# Список экземпляров dion-crypto-engin. Укажите локальные адреса всех экземпляров:
server xxx.xxx.xxx.xxx:9168 max_fails=3 fail_timeout=30s;
# server yyy.yyy.yyy.yyy:9168 max_fails=3 fail_timeout=30s;
}
# HTTP → HTTPS редирект (порт 80)
server {
listen 80;
return 301 https://$host:9168$request_uri; # Редирект на gRPC порт
}
# Основной gRPC сервер (порт 9168)
server {
listen 9168 ssl;
http2 on;
default_type application/grpc;
# TLS конфигурация. Заведите пути к сертификатам (замените cert.crt и cert.key на акутальные имена ваших сертификатов)
ssl_certificate /etc/nginx/certs/cert.crt;
ssl_certificate_key /etc/nginx/certs/cert.key;
# Mutual TLS (mTLS) - раскомментировать для включения
# ssl_verify_client on;
# ssl_client_certificate /crt/client_ca.crt;
# Логи
access_log /var/log/nginx/grpc_access.log ;
error_log /var/log/nginx/grpc_error.log debug;
# Healthcheck
location /healthCheck {
access_log off;
return 204 '';
}
# gRPC endpoint
location /dc_crypto_engine.CryptoEngineService {
grpc_pass grpc://dc_crypto_engine_upstream;
}
# Обработчики ошибок
error_page 400 = @grpc_internal;
error_page 401 = @grpc_unauthenticated;
error_page 403 = @grpc_permission_denied;
error_page 404 = @grpc_unimplemented;
error_page 429 = @grpc_unavailable;
error_page 502 = @grpc_unavailable;
error_page 503 = @grpc_unavailable;
error_page 504 = @grpc_unavailable;
# Другие обработчики ошибок
# include /etc/nginx/grpc_errors.conf; # Оставим отдельно для чистоты
}
}
Сохраните изменения в файле: ctrl+O ctrl+X в Nano.
Перейдите в каталог /app/dion/dcu-nginx/ и запустите контейнер:
cd /app/dion/dcu-nginx/
docker compose up -d
docker-compose up -d
Убедитесь, что запущеный контейнер находится в статусе UP:
docker ps
Результат успешного выполнения:
Если контейнер не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.