Настройте Cockpit для работы с Nginx Proxy Manager.

Вопрос или проблема

У нас настроена сеть, как указано ниже

1/ Сервер Ubuntu с Cockpit на 192.179.10.101. Cockpit доступен по адресу https://192.168.1.101:9090

2/ Менеджер прокси Nginx на 192.168.10.102

3/ У нас настроено доменное имя, для примера, abc.com. Мы настроили пересылку DNS, https://cockpit.abc.com, чтобы получить доступ к нашему Cockpit извне

4/ Мы настроили NPM на пересылку с cockpit.abc.com на 192.168.1.101:9090 и также используем SSL от Let’s Encrypt

5/ Мы изменили cocpit.conf, чтобы он был осведомлен о прокси, следуйте этой статье

https://garrett.github.io/cockpit-project.github.io/external/wiki/Proxying-Cockpit-over-NGINX

6/ Если мы используем внутренний IP, например, 192.168.1.101:9090, мы можем получить доступ к Cockpit из внутренней сети

7/ Если мы используем cockpit.abc.com, мы получаем ошибку, так как TLS рукопожатие не удалось и получено предупреждение. Эта ошибка означает, что, после проверки, Cockpit все еще не осведомлен о прокси…

Мы что-то упустили, чтобы сделать Cockpit доступным извне через cockpit.abc.com?

Спасибо

Я могу получить доступ к Cockpit, создав файл /etc/cockpit/cockpit.conf с содержимым:
[WebService]
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted=true
Origins = *

.

Ответ или решение

Для настройки Cockpit с использованием Nginx Proxy Manager и обеспечения его доступности через доменное имя из внешней сети, необходимо учитывать несколько важных аспектов, связанных с проксированием и безопасностью, включая использование протоколов HTTPS и корректной настройки конфигурационных файлов. Обратим внимание на теоретическую основу, разберем пример настройки и применим его на практике.

Теоретическая основа

Cockpit и Nginx Proxy Manager

Cockpit — это удобный веб-интерфейс для управления серверами на базе Linux, предоставляющий возможность мониторинга системы, управления пользователями и службами. Nginx Proxy Manager (NPM) служит посредником для маршрутизации HTTP/HTTPS запросов, обеспечивая SSL-терминацию и возможность управления проксированием через удобный интерфейс.

Основные требования

  1. Корректное доменное имя (FQDN): Для доступа к Cockpit извне необходимо, чтобы доменное имя (например, cockpit.abc.com) было настроено с соответствующими DNS записями, указывающими на IP-адрес вашего NPM.
  2. SSL сертификаты: Важно, чтобы соединение было защищено с помощью SSL. Let’s Encrypt предоставляет возможность автоматической установки бесплатных SSL сертификатов через NPM.
  3. Настройка проксирования: В Cockpit и Nginx должны быть корректно настроены параметры для работы с прокси-сервером, включая учет заголовков X-Forwarded-* и корректировка настроек конфигурации WebService в Cockpit.

Пример настройки

Шаги настройки

  1. DNS конфигурация:
    Параметризация DNS записи для доменного имени cockpit.abc.com, чтобы оно указывало на ваш NPM сервер (192.168.10.102).

  2. Настройка Nginx Proxy Manager:

    • В панели управления NPM создайте новый Proxy Host.
    • Укажите доменное имя cockpit.abc.com.
    • В поле Forward Hostname or IP введите IP адрес 192.168.1.101 и порт 9090.
    • Включите опцию «Активация SSL» и выберите «Request a new SSL certificate from Let’s Encrypt». Убедитесь, что опция «Force SSL» также включена.
  3. Настройка файла cockpit.conf:
    Убедитесь, что файл /etc/cockpit/cockpit.conf содержит следующее:

    [WebService]
    ProtocolHeader = X-Forwarded-Proto
    AllowUnencrypted = true
    Origins = *

    Этот конфигурационный файл позволяет Cockpit правильно обрабатывать запросы, поступающие от прокси, и разрешает небезопасные подключения, что может помочь локальной отладке.

  4. Перезапуск сервисов:
    После изменений в конфигурации потребуется перезапустить службы Cockpit и Nginx для применения новых настроек:

    sudo systemctl restart cockpit
    sudo systemctl restart nginx

Применение и устранение проблем

Если вы по-прежнему сталкиваетесь с ошибкой TLS handshake fail, выполните следующие проверочные действия:

  1. Проверка атрибутов SSL: Убедитесь, что SSL сертификаты правильно установлены и действительны. В интерфейсе NPM проверьте, что сертификат был успешно создан и закреплен за доменом cockpit.abc.com.

  2. Логирование и диагностика: Просмотрите логи Nginx и Cockpit. Они могут содержать дополнительные указания на причину ошибки. Логи можно найти по путям /var/log/nginx/error.log и /var/log/cockpit/cockpit.log соответственно.

  3. Проверка сети: Убедитесь, что настраиваемый сервер Cockpit доступен из внутренней сети по адресу 192.168.1.101:9090.

  4. Анализ заголовков:
    Убедитесь, что в конфигурации Nginx передаются корректные заголовки X-Forwarded-For и X-Forwarded-Proto, так как эти заголовки важны для работы HTTPS при условиях обратного проксирования.

Заключение

В процессе настройки Cockpit для работы через Nginx Proxy Manager следует внимательно соблюдать требований по SSL, конфигурации файлов, а также правильно маршрутизировать запросы. Убедитесь, что все конфигурации корректно применены, и используйте утилиты системного администрирования для диагностики и устранения неисправностей.

В случае, если все действия выполнены корректно, доступ к Cockpit по доменному имени cockpit.abc.com должен осуществляться без ошибок, позволяя безопасно управлять вашим сервером из внешней сети.

Оцените материал
Добавить комментарий

Капча загружается...