Як правильно зберігати конфіги на продакшені

Конфіги nginx дозволяють робити include, тому можете всі sensitivity дані викласти в окремий файлик, і додати його в .gitignore, а інше можна і в гіт зберігати (але краще не гітхаб, а свій).

Стандартний велосипедний спосіб для конфігів - перед тим, як поміняти config.cfg робиш cp config.cfg config.cfg-yymmdd можна і їм обійтися.

NOONE: Напишіть скрипт, який копіює всі конфігураційні файли ночами, зберігайте останні 30 днів, або хоч усі - конфіги мало місця займають, і забудьте про забутість. Можна навіть робити так, що на місці у вас лежить два файли config.cfg config.cfg.nightly

або etc/nginx/ etc/nginx.nightly/

А в окремій папці вже архіви за датами. При цьому прийшли, поправили, і завжди під рукою оригінал для diff без зайвих рухів тіла.

правильна відповідь - не зберігати конфіги з секретами у системі контролю версій.

ти можеш зробити так, щоб конфіг із гіта надавав т.зв. "Sensible defaults", а всі секрети будуть перевизначені другим конфігом, який підкладе система деплою. Це про твої програми.

про управління конфігураціями вузлів (контуперів, тобто), кошерно використовувати системи управління конфігурацією - ansible, salt та ін.

Будь-яка сучасна розвинена система контролю версій git, mercurrial.

Як правильно помітили - ключі та паролі зберігати окремо від конфігів.

Конфігурацію потрібно зберігати в VCS, наприклад, на тому ж github або gitlab. Особисто я б рекомендував GitHub, якщо ваш проект не підпадає під державну таємницю або не є системою управління ядерним реактором. В інших випадках код можна зберігати на GitHub. Навіть Microsoft зберігає свійкод на ньому.

Для зберігання ключів і т.д. необхідно використовувати рішення на кшталт Vault.