Публикация INFRAX в продакшн
Обзор
Для публикации INFRAX в продакшн рекомендуется использовать reverse proxy сервер (например, Nginx). Это обеспечивает:
- Централизованное управление SSL сертификатами
- Возможность использования доменных имен вместо IP:порт
- Дополнительный уровень безопасности
- Балансировку нагрузки (при необходимости)
- Единую точку входа для всех сервисов
В данном руководстве описывается настройка Nginx в качестве reverse proxy для основных сервисов INFRAX:
- INFRAX - основное приложение (порты 8045 - веб-интерфейс, 8042 - нативные клиенты)
- Identyx - система управления пользователями (порт 8040)
Если вы планируете использовать нативные клиенты (RDP, SSH, VNC) для удаленных подключений извне вашей сети, порт 8042
контейнера INFRAX должен быть доступен напрямую, без проксирования через Nginx. См. раздел Доступ для нативных клиентов.
Настройка URL приложений
Перед настройкой reverse proxy необходимо настроить URL приложений в самой системе INFRAX:
Шаг 1: Запуск меню управления
Linux / macOS / Git Bash:
sudo bash infrax.sh
Windows (Command Prompt или PowerShell):
infrax.bat
Шаг 2: Настройка URL
- Выберите пункт "7. ⚙️ Настроить URL приложений"
- Выберите пункт "3. Полностью ввести свой URL"
- Укажите домены для ваших сервисов:
Введите URL для INFRAX: https://infrax.mydomain.ru Введите URL для IDENTYX: https://auth.mydomain.ru
Используйте реальные доменные имена, которые будут настроены в вашем DNS. Убедитесь, что:
- DNS записи A или CNAME указывают на IP адрес вашего сервера
- Используется протокол
https://
- Домены доступны для проверки при получении SSL сертификатов
Установка Nginx
Установите Nginx и утилиты для управления SSL сертификатами:
Ubuntu / Debian
sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
CentOS / RHEL
sudo yum install -y epel-release
sudo yum install -y nginx certbot python3-certbot-nginx
Временный SSL сертификат
Для начальной настройки установите самоподписанный сертификат:
sudo apt install -y ssl-cert
Этот пакет создает временные сертификаты, которые позволят запустить Nginx с HTTPS до получения реальных сертификатов от Let's Encrypt.
Самоподписанные сертификаты расположены в:
/etc/ssl/certs/ssl-cert-snakeoil.pem
- сертификат/etc/ssl/private/ssl-cert-snakeoil.key
- приватный ключ
Настройка Nginx
Создайте конфигурационный файл для reverse proxy:
sudo nano /etc/nginx/conf.d/reverse-proxy.conf
Содержимое конфигурационного файла
# /etc/nginx/conf.d/reverse-proxy.conf
# Общие настройки прокси
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;
# Reverse Proxy для Identyx (IAM система)
server {
listen 443 ssl;
server_name auth.mydomain.ru;
# Временные самоподписанные сертификаты
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://127.0.0.1:8040;
proxy_ssl_verify off;
# Поддержка WebSocket для реального времени
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
# Reverse Proxy для INFRAX (основное приложение)
server {
listen 443 ssl;
server_name infrax.mydomain.ru;
# Временные самоподписанные сертификаты
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://127.0.0.1:8045;
proxy_ssl_verify off;
# Увеличенный лимит для загрузки файлов
client_max_body_size 20G;
# Отключение буферизации для больших файлов
proxy_buffering off;
proxy_request_buffering off;
# Увеличенные таймауты для длительных операций
proxy_read_timeout 300s;
proxy_send_timeout 300s;
# Поддержка WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
# HTTP → HTTPS редирект
server {
listen 80;
server_name auth.mydomain.ru infrax.mydomain.ru;
return 301 https://$host$request_uri;
}
# Переменная для корректной установки Connection на Upgrade/keep-alive
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
Не забудьте заменить auth.mydomain.ru
и infrax.mydomain.ru
на ваши реальные домены!
Описание параметров конфигурации
Параметр | Значение | Назначение |
---|---|---|
proxy_http_version |
1.1 | Использование HTTP/1.1 для поддержки WebSocket |
proxy_set_header Host |
$host | Передача оригинального заголовка Host |
proxy_set_header X-Real-IP |
$remote_addr | Передача реального IP клиента |
proxy_set_header X-Forwarded-For |
$proxy_add_x_forwarded_for | Цепочка прокси-серверов |
proxy_set_header X-Forwarded-Proto |
$scheme | Передача протокола (http/https) |
client_max_body_size |
20G | Максимальный размер загружаемых файлов |
proxy_buffering |
off | Отключение буферизации для больших файлов |
proxy_read_timeout |
300s | Таймаут чтения ответа от бэкенда |
proxy_ssl_verify |
off | Отключение проверки самоподписанного сертификата бэкенда |
Проверка и применение конфигурации
Проверьте синтаксис конфигурации и перезагрузите Nginx:
sudo nginx -t && sudo systemctl reload nginx
Если проверка прошла успешно, вы увидите:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Доступ для нативных клиентов
Если вы планируете использовать нативные клиенты (mstsc.exe для RDP, PuTTY для SSH и т.д.) для удаленных подключений извне вашей сети, необходимо обеспечить прямой доступ к порту 8042
контейнера INFRAX.
Порт 8042
НЕ проксируется через Nginx, в отличие от порта 8045 (веб-интерфейс) и 8040 (Identyx). Это связано с особенностями работы нативных протоколов RDP/SSH/VNC, которые требуют прямого подключения к Video Gateway через контейнер INFRAX.
Настройка доступа к порту 8042
Для работы нативных клиентов извне необходимо:
- Открыть порт 8042 в firewall:
# UFW (Ubuntu/Debian) sudo ufw allow 8042/tcp # Firewalld (CentOS/RHEL) sudo firewall-cmd --permanent --add-port=8042/tcp sudo firewall-cmd --reload # Iptables sudo iptables -A INPUT -p tcp --dport 8042 -j ACCEPT sudo iptables-save > /etc/iptables/rules.v4
- Настроить проброс порта на роутере/файерволе (если сервер находится за NAT):
- Порт:
8042
- Протокол:
TCP
- Целевой IP: IP адрес вашего сервера INFRAX
- Порт:
- Убедиться, что контейнер INFRAX использует валидный SSL сертификат для порта 8042 (самоподписанный сертификат по умолчанию может вызывать проблемы с некоторыми клиентами)
Режимы подключения в INFRAX
INFRAX поддерживает два режима удаленного доступа:
Режим | Порт | Описание | Требования |
---|---|---|---|
Веб-клиент | 8045 | Подключение через браузер (Apache Guacamole) | Работает через Nginx, не требует дополнительных настроек |
Нативный клиент | 8042 | Использование системных приложений (mstsc, PuTTY, VNC Viewer) | Требует прямого доступа к порту 8042 |
Сценарии использования
Только веб-доступ (рекомендуется)
Если пользователи работают только через браузер:
- ✅ Порт 8042 можно НЕ открывать извне
- ✅ Все подключения идут через Nginx (порты 80/443)
- ✅ Максимальная безопасность
Веб + нативные клиенты
Если требуются подключения через нативные клиенты извне:
- ⚠️ Порт 8042 должен быть открыт и доступен извне
- ⚠️ Убедитесь в наличии валидного SSL сертификата для порта 8042 контейнера INFRAX
- ⚠️ Рекомендуется ограничить доступ по IP (белые списки)
Ограничение доступа к порту 8042
Для повышения безопасности рекомендуется разрешить доступ к порту 8042 только с определенных IP адресов:
# UFW - разрешить доступ только с конкретных IP
sudo ufw allow from 203.0.113.0/24 to any port 8042 proto tcp
# Firewalld - создание зоны с ограничениями
sudo firewall-cmd --permanent --new-zone=infrax-native
sudo firewall-cmd --permanent --zone=infrax-native --add-port=8042/tcp
sudo firewall-cmd --permanent --zone=infrax-native --add-source=203.0.113.0/24
sudo firewall-cmd --reload
Если пользователи работают из фиксированных офисов или через VPN, настройте белые списки IP адресов для доступа к порту 8042. Это значительно повысит безопасность системы.
Установка реальных SSL сертификатов
После успешной настройки Nginx с временными сертификатами, установите реальные SSL сертификаты от Let's Encrypt:
Получение сертификатов
Certbot автоматически обновит конфигурацию Nginx и заменит временные сертификаты на настоящие:
# Для домена Identyx
sudo certbot --nginx -d auth.mydomain.ru
# Для домена INFRAX
sudo certbot --nginx -d infrax.mydomain.ru
Следуйте инструкциям на экране:
- Введите email адрес для важных уведомлений
- Согласитесь с условиями использования
- Выберите, хотите ли вы получать новости от EFF (опционально)
Certbot автоматически настраивает задание cron для обновления сертификатов. Сертификаты будут обновляться автоматически до истечения срока действия.
Проверка после установки сертификатов
Проверьте конфигурацию и перезагрузите Nginx:
sudo nginx -t && sudo systemctl reload nginx
Проверка статуса сертификатов
Просмотрите установленные сертификаты:
sudo certbot certificates
Тестирование автоматического обновления
Проверьте, что автоматическое обновление настроено корректно:
sudo certbot renew --dry-run
Проверка работоспособности
После завершения настройки проверьте доступность сервисов:
Проверка с помощью curl
# Проверка Identyx
curl -I https://auth.mydomain.ru
# Проверка INFRAX
curl -I https://infrax.mydomain.ru
Успешный ответ должен содержать HTTP/2 200
или HTTP/1.1 200 OK
.
Проверка в браузере
- Откройте
https://infrax.mydomain.ru
в браузере - Убедитесь, что отображается зеленый замок (валидный SSL сертификат)
- Войдите в систему с учетными данными
- Проверьте основные функции приложения
Проверка WebSocket соединений
Откройте консоль разработчика в браузере (F12) и убедитесь, что:
- Нет ошибок подключения к WebSocket
- Уведомления в реальном времени работают корректно
- Обновления данных происходят мгновенно
Устранение неполадок
502 Bad Gateway
Причина: Nginx не может подключиться к бэкенд-сервису INFRAX.
Решение:
- Убедитесь, что INFRAX запущен:
docker ps
- Проверьте, что порты 8040 и 8045 открыты и слушаются:
sudo netstat -tlnp | grep -E '8040|8045'
- Проверьте логи Nginx:
sudo tail -f /var/log/nginx/error.log
- Проверьте логи INFRAX:
docker compose logs infrax docker compose logs identyx
SSL сертификат не получен
Причина: Certbot не может подтвердить владение доменом.
Решение:
- Проверьте DNS записи:
nslookup infrax.mydomain.ru nslookup auth.mydomain.ru
- Убедитесь, что порт 80 открыт (нужен для проверки Let's Encrypt)
- Проверьте firewall:
# UFW (Ubuntu) sudo ufw allow 'Nginx Full' # Firewalld (CentOS) sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
WebSocket не работает
Причина: Nginx не передает заголовки Upgrade для WebSocket.
Решение:
Убедитесь, что в конфигурации присутствуют строки:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
Большие файлы не загружаются
Причина: Ограничение на размер загружаемых файлов.
Решение:
Увеличьте лимит в конфигурации Nginx:
client_max_body_size 20G;
Также проверьте настройки PHP (если применимо) в php.ini
:
upload_max_filesize = 20G
post_max_size = 20G
Медленная работа через прокси
Решение:
Отключите буферизацию и увеличьте таймауты:
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
Ваша установка INFRAX теперь доступна через доменные имена с валидными SSL сертификатами и готова к продакшн использованию!