Публикация INFRAX в продакшн
Обзор
В текущей версии INFRAX для публикации в продакшн используются два подхода: прямая публикация через встроенный веб-сервер и публикация через reverse proxy. Для большинства сценариев рекомендуется reverse proxy, а прямую публикацию удобно использовать для небольших установок и тестовых стендов.
Текущая схема адресов
| Компонент | Порт | Назначение |
|---|---|---|
| INFRAX | 8045 |
Рабочее место IT-специалистов: мониторинг, helpdesk, удалённые подключения |
| IDENTYX | 8040 |
Управление пользователями, правами доступа и учетными данными |
В настройках приложения пользователь видит вкладки Авторизация и Лицензирование. Обе ведут в Identyx: первая открывает профиль и права доступа, вторая - централизованную лицензию.
Перед публикацией через reverse proxy задайте публичные URL через меню управления. Для INFRAX используйте адрес вида https://infrax.example.com, для IDENTYX - https://auth.example.com.
Настройка URL приложений
URL приложений настраиваются через меню управления. Это тот же поток, который используется при установке и первом запуске.
- Откройте меню управления:
bash infrax.sh,sudo infraxилиinfrax.batв зависимости от способа установки. - Выберите пункт 7. ⚙️ Настроить URL приложений.
- Выберите 3. Полностью ввести свой URL.
- Укажите реальные домены:
INFRAX: https://infrax.example.com IDENTYX: https://auth.example.com
Что важно учесть
- Используйте только домены, которые уже настроены в DNS.
- Указывайте именно
https://, а неhttp://. - После изменения URL приложение нужно перезапустить.
Вариант 1: Прямая публикация
Прямая публикация подходит для простых схем, когда INFRAX и IDENTYX доступны без отдельного reverse proxy. При первом запуске система создает SSL сертификат автоматически, если в каталоге data/ssl его еще нет.
Текущий код использует файлы data/ssl/apache.crt и data/ssl/apache.key. Если сертификаты заменяются вручную, приложение нужно остановить и запустить снова.
- Сначала настройте публичные URL через меню управления.
- Запустите приложение с новыми URL, чтобы оно создало или обновило SSL сертификаты.
- При необходимости остановите приложение и замените файлы
apache.crtиapache.keyна свои. - Снова запустите приложение.
Когда подходит этот вариант
- Небольшая инсталляция на одном сервере.
- Тестовый стенд без отдельного reverse proxy.
- Сценарий, где доступ к сервисам идет напрямую по портам
8040и8045.
Вариант 2: Публикация через Reverse Proxy
Для продакшн-среды reverse proxy обычно удобнее: он завершает TLS, обслуживает стандартные порты 80/443, пропускает WebSocket и позволяет держать backend на внутренних адресах.
Что должно поддерживаться в конфигурации
- HTTPS termination на reverse proxy.
- Передача заголовков
Host,X-Real-IP,X-Forwarded-ForиX-Forwarded-Proto. - Поддержка WebSocket.
- Лимит загрузки файлов не ниже
20G. - Таймауты порядка
300sдля долгих операций.
Все примеры ниже направляют трафик на 127.0.0.1:8045 для INFRAX и на 127.0.0.1:8040 для IDENTYX.
Nginx
Ниже приведён пример для Nginx с двумя виртуальными хостами. Сначала поднимается конфигурация на порту 80, а certbot --nginx затем сам добавляет TLS.
Шаг 1. Создайте файл конфигурации (например /etc/nginx/sites-available/infrax.conf):
# Блок map задаёт переменную $connection_upgrade для проброса WebSocket.
# Объявляется один раз в контексте http (файлы sites-enabled/ и conf.d/ уже внутри http {}).
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name infrax.example.com;
location / {
proxy_pass https://127.0.0.1:8045;
proxy_ssl_verify off;
proxy_http_version 1.1;
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 Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
client_max_body_size 20G;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
server {
listen 80;
server_name auth.example.com;
location / {
proxy_pass https://127.0.0.1:8040;
proxy_ssl_verify off;
proxy_http_version 1.1;
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 Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Шаг 2. Включите конфигурацию, проверьте синтаксис и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/infrax.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Шаг 3. Выпустите сертификат командой из раздела Установка реальных SSL сертификатов. certbot --nginx автоматически добавит в эти блоки listen 443 ssl, пути к сертификату Let's Encrypt и редирект с HTTP на HTTPS.
Готовые сертификаты (корпоративный CA или выпуск вручную)
Если сертификаты уже есть, certbot не нужен — пропишите TLS сами. Блок map остаётся тем же, а каждый server оформляется с редиректом и блоком 443 ssl (пример для INFRAX; для auth.example.com — аналогично, с proxy_pass на 127.0.0.1:8040):
server {
listen 80;
server_name infrax.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name infrax.example.com;
ssl_certificate /etc/ssl/infrax/fullchain.pem;
ssl_certificate_key /etc/ssl/infrax/privkey.pem;
location / {
proxy_pass https://127.0.0.1:8045;
proxy_ssl_verify off;
proxy_http_version 1.1;
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 Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
client_max_body_size 20G;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
Traefik
Traefik удобен для Docker-окружений и автоматически работает с Lets Encrypt.
http:
routers:
infrax:
rule: "Host(`infrax.example.com`)"
entryPoints:
- websecure
service: infrax
tls:
certResolver: letsencrypt
identyx:
rule: "Host(`auth.example.com`)"
entryPoints:
- websecure
service: identyx
tls:
certResolver: letsencrypt
services:
infrax:
loadBalancer:
servers:
- url: "https://127.0.0.1:8045"
identyx:
loadBalancer:
servers:
- url: "https://127.0.0.1:8040"
В статической конфигурации Traefik добавьте точку входа HTTPS и получение сертификатов:
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: admin@example.com
storage: /var/lib/traefik/acme.json
httpChallenge:
entryPoint: web
Caddy
Caddy подходит, если нужен короткий конфиг и автоматическое обновление сертификатов.
infrax.example.com {
reverse_proxy https://127.0.0.1:8045 {
transport http {
tls_insecure_skip_verify
}
}
}
auth.example.com {
reverse_proxy https://127.0.0.1:8040 {
transport http {
tls_insecure_skip_verify
}
}
}
HAProxy
HAProxy полезен, если нужен явный контроль над балансировкой и TLS.
frontend https-in
bind *:443 ssl crt /etc/haproxy/certs/
acl host_inf hdr(host) -i infrax.example.com
acl host_id hdr(host) -i auth.example.com
use_backend infrax if host_inf
use_backend identyx if host_id
backend infrax
server infrax1 127.0.0.1:8045 ssl verify none
backend identyx
server identyx1 127.0.0.1:8040 ssl verify none
Apache HTTP Server
Для Apache включите proxy, proxy_http, rewrite, headers и ssl.
<VirtualHost *:443>
ServerName infrax.example.com
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/infrax.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/infrax.example.com/privkey.pem
ProxyPreserveHost On
ProxyPass / https://127.0.0.1:8045/
ProxyPassReverse / https://127.0.0.1:8045/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) wss://127.0.0.1:8045/$1 [P,L]
</VirtualHost>
<VirtualHost *:443>
ServerName auth.example.com
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/auth.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/auth.example.com/privkey.pem
ProxyPreserveHost On
ProxyPass / https://127.0.0.1:8040/
ProxyPassReverse / https://127.0.0.1:8040/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) wss://127.0.0.1:8040/$1 [P,L]
</VirtualHost>
Установка реальных SSL сертификатов
Для продакшна используйте реальные сертификаты от корпоративного центра сертификации или от Let's Encrypt. Если reverse proxy завершает TLS, сертификаты нужны на нем. Если используется прямая публикация, сертификаты размещаются в каталоге data/ssl приложения.
Размещение при прямой публикации
data/ssl/apache.crt- сертификат с цепочкойdata/ssl/apache.key- приватный ключ
Примеры для reverse proxy
Перед запуском certbot конфигурация из раздела Nginx уже должна быть включена и проходить sudo nginx -t (на портах listen 80). Certbot сам отредактирует конфигурацию, добавит listen 443 ssl с путями к сертификату и перезагрузит Nginx.
# Nginx
sudo certbot --nginx -d infrax.example.com -d auth.example.com
# Apache
sudo certbot --apache -d infrax.example.com -d auth.example.com
# Traefik / Caddy
# Сертификаты обновляются автоматически
Проверка работоспособности
После настройки проверьте, что оба веб-приложения доступны.
curl -I https://infrax.example.com
curl -I https://auth.example.com
- В браузере открывается INFRAX без ошибок сертификата.
- Вкладка Авторизация открывает Identyx.
- Вкладка Лицензирование открывает централизованную лицензию в Identyx.
Устранение неполадок
502 Bad Gateway
Причина: reverse proxy не видит backend-сервисы.
Решение: проверьте, что INFRAX и IDENTYX запущены, а порты 8040 и 8045 слушаются.
docker ps
netstat -tlnp | grep -E '8040|8045'
Не открывается Identyx
Причина: неверно настроены публичные URL или DNS-записи.
Решение: повторите пункт 7. ⚙️ Настроить URL приложений и убедитесь, что домены совпадают с reverse proxy.
После настройки сервисы INFRAX и IDENTYX доступны по доменным именам.