Изменения в конфиге Nginx
Меняем содержимое конфига на следующий текст:
server {
listen 443 ssl http2;
server_name my_domain.tld; # Вставляем нужный домен
# SSL сертификаты от Let's Encrypt
ssl_certificate /etc/letsencrypt/live/my_domain.tld/fullchain.pem; # Вставляем нужный домен
ssl_certificate_key /etc/letsencrypt/live/my_domain.tld/privkey.pem; # Вставляем нужный домен
# Общие SSL настройки (рекомендуется для безопасности и производительности)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Пример для первого контейнера: https://my_domain.tld/vm1/
location /vm1/ {
proxy_pass https://localhost:9090/vm1/; # IP и порт Cockpit в первом контейнере
# Поддержка WebSocket (обязательно для Cockpit)
proxy_http_version 1.1;
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;
# Ключевое для cookie и аутентификации в subpath
proxy_cookie_path / /vm1/;
# Отключаем буферизацию для мгновенной работы терминала
proxy_buffering off;
proxy_request_buffering off;
# Таймауты для долгоживущих соединений (WebSocket)
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_ssl_verify off; # если self-signed в контейнере
}
# Пример для второго контейнера: https://my_domain.tld/vm2/
location /vm2/ {
proxy_pass https://10.155.64.245:9090/vm2/; # Замените на реальный IP второго контейнера
proxy_http_version 1.1;
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;
# Ключевое для cookie и аутентификации в subpath
proxy_cookie_path / /vm2/;
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_ssl_verify off; # если self-signed в контейнере
}
# Добавляйте новые location-блоки по аналогии для каждого нового контейнера
# Опционально: редирект корня домена на страницу выбора или заглушку
location = / {
return 301 /vm1/; # Или можно сделать простую страницу с ссылками
}
# Запрет доступа к скрытым файлам и служебным путям
location ~ /\. {
deny all;
}
}
Названия подкаталогов выбираем самостоятельно, либо оставляем как есть - vm1, vm2, и т.д.
sudo nginx -t
sudo systemctl reload nginx