Cockpit - мультисерверный вход по домену
Cockpit
2
Сообщения
1
Posters
9
Просмотры
-
Изменения в конфиге 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 -
Изменения в конфигах Cockpit
В каждом LXC-контейнере (/etc/cockpit/cockpit.conf):
Для первого:
[WebService] Origins = https://my_domain.tld wss://my_domain.tld # меняем на нужный домен ProtocolHeader = X-Forwarded-Proto AllowUnencrypted = true UrlRoot = /vm1 # Добавляем эту строку для первого сервераДля второго:
[WebService] Origins = https://my_domain.tld wss://my_domain.tld # меняем на нужный домен ProtocolHeader = X-Forwarded-Proto AllowUnencrypted = true UrlRoot = /vm2 # Добавляем эту строку для второго сервераДалее - для каждой системы с Cockpit
systemctl restart cockpit