ssl для рандомных хостов делегированных на IP. план - инжект njs-ки с двумя функциями, которые отдают key и cert в виде raw-data и подсовывают в ssl-конфигурацию nginx-a налету.
демку собрал для 1 домена, все работает ок. njs-ку инклюдю в http, вызываю там же 2 функции, кладу значения в переменные key/cert и подсовываю через data: в ssl-конфиг.
вопрос заключается в том что когда юзается "продакшн"-схема (без жестко зашитого хоста), т.е. в server_name прописано "_" - нужно как-то взять в njs $host. Судя по всевозможным докам - это должно быть возможно через r.variables, но это почему-то пустой объект. При этом могу записать через js_var что-то константное, например "test" и оно в variables видно. Пробовал записать local_host "$host" - тоже пусто. Сами по себе переменные в конфигах nginx-а доступны, т.е. они НЕдоступны только в js-файле или не передаются туда по какой-то причине...
возможно есть какая-то настройка/флаг у nginx/njs-а которая выключает проброс параметров в скрипты?
тут кстати теоретически ответ на первый вопрос может быть "чтобы не ходить в fs каждый раз при запросе", но я пока в этом ответе не уверен)
А что мешает через map нарезать переменных с data, которые подсовывать в сертификат/ключ?
список хостов для которых сертификаты нужны на момент развертки nginx-а не известен - они динамические. ну либо я не понял решение...(
Шаблонирование файла конфигурации специальными для того средствами и nginx -t ; nginx -s reload либо pkill -HUP nginx из кода, работающего с конфигом. Не ясно, отчего позже в диалоге возникает JS для развёртки систем. Или не понял. Т.к. Nginx не средство управления конфигурациями, а упомянут в таком качестве. При развёртке нередко можно встретить Питон и Руби, как парные к системам управления конфигурациями.
Обсуждают сегодня