Домен и SSL — Nginx (опционально)
Если нужен собственный домен и HTTPS, настройте Nginx как обратный прокси перед SaveTest.
Nginx можно запускать любым способом: как системный пакет на хосте или как отдельный контейнер — это не принципиально. Главное, чтобы он проксировал трафик на ваш frontend SaveTest. По умолчанию используется порт 8080.
Установка Nginx
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install nginx
# CentOS/RHEL
sudo yum install nginx
Пример server
Файл /etc/nginx/sites-available/savetest или /etc/nginx/conf.d/savetest.conf:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream savetest {
server localhost:8080;
keepalive 32;
}
server {
listen 80;
server_name your-domain.com www.your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com www.your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
client_max_body_size 1g;
proxy_connect_timeout 600;
proxy_send_timeout 600;
client_body_timeout 600;
location / {
proxy_pass http://savetest;
proxy_http_version 1.1;
# Критически важно для WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $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;
# Увеличенные таймауты для WebSocket
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
# Отключаем буферизацию для WebSocket
proxy_buffering off;
}
}
Критичные параметры в конфиге прокси:
proxy_set_header Upgradeиproxy_set_header Connection— обязательны для WebSocket.proxy_read_timeout,proxy_send_timeoutиproxy_buffering off— нужны для стабильной работы долгих WebSocket-соединений.client_max_body_size,proxy_connect_timeout,proxy_send_timeout,client_body_timeout— важны для загрузки больших файлов (например, архивов Allure).
Выпуск сертификата Let's Encrypt
sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
sudo certbot renew --dry-run
Активация конфига
sudo ln -s /etc/nginx/sites-available/savetest /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
После перехода на внешний домен и HTTPS:
docker compose restart backend