Некоторое время я работал над веб-приложением, которое работало на двух каплях DigitalOcean с балансировкой нагрузки (с использованием балансировщика нагрузки DigitalOcean, а не моей собственной капли для балансировки нагрузки) с завершением SSL.
До сих пор трафик указывал на beta.mydomain.com, а запись A указывала на IP-адрес балансировщика нагрузки. Балансировщик нагрузки настроен на выполнение SSL-терминации с автоматически сгенерированным сертификатом SSL от Let's Encrypt.
Дело в том, что я выхожу из бета-версии, поэтому я хотел изменить URL-адрес сайта на другой поддомен (chile.mydomain.com). Таким образом, я:
1. - изменил базовый путь в моем приложении, чтобы использовать новый домен (не имеет отношения к этой проблеме, но я упоминаю об этом для полноты)
2.- создал новую запись A для поддомена, указывающую на тот же LB
3.- перенастроил nginx (в обоих nginx.conf
и sites-available
), чтобы прослушать новый поддомен, проверил все с помощью nginx -t
и перезапустился. Это работает правильно, поскольку сайт действительно отвечает, когда я перехожу в новый домен.
Если я перейду на новый домен, я получаю ошибку SSL (недействительный сертификат). Я решил, что это потому, что я ранее настроил исходный сертификат для базового домена и beta
субдомен, как это видно в разделе сертификата SAN:
DNS Name=beta.mydomain.com
DNS Name=mydomain.com
Итак, ничего страшного: воссоздайте правило HTTP2 на LB и используйте новый субдомен, чтобы я получил новый сертификат для нового субдомена. И вот в чем проблема: когда я пытаюсь это сделать, я получаю сообщение об ошибке:
Для домена mydomain.com не найдено записей NS.
Этого не произошло в предыдущем субдомене бета-версии. Я также попытался добавить записи NS для поддомена (указал на ns1, 2 и 3.digitalocean.com) с небольшим TTL, и теперь ошибка гласит:
один или несколько серверов имен digitalocean не найдены для домена
Таким образом, в основном панель управления DO отказывается генерировать новый сертификат для домена (который я приобрел у namecheap в качестве регистратора, указал его на digitalocean несколько месяцев назад и не трогал его), хотя домен полностью размещен в digitalocean.
Я совершенно потерялся сейчас, пытаясь понять это уже довольно долгое время. Это меня озадачивает, потому что у бета-поддомена никогда не было собственных записей NS (только записи NS предназначены для базового домена)
Что мне здесь не хватает? Я уверен, что это что-то действительно глупое, но я начинаю отчаяться
ОБНОВИТЬ
От разочарования я попытался запустить второй, новый балансировщик нагрузки, и получил точно такой же результат. Я даже попытался настроить завершение SSL в новом LB для бета-субдомена, который уже работает в первом LB (а не в новом субдомене), и получил точно такое же сообщение. Я забыл добавить, что я уже открыл заявку в службу поддержки DigitalOcean, но пока не получил ответа.
После множества мозгов и нескольких попыток за выходные я наконец получил ответ от Digital Ocean. Оказалось, что это ошибка не с моей стороны, а ошибка в бэкэнде DO, которая повлияла на генерацию всех сертификатов Let's Encrypt для балансировщиков нагрузки (использование certbot для определенных капель было в порядке). Исправление было отправлено в воскресенье утром (по восточному времени), и теперь проблема решена.