Перезапустите Nginx или перезагрузите кеш сертификата при изменении сертификата - PullRequest
0 голосов
/ 17 июня 2020

Фон:

Я запускаю приложение внутри Docker, которым будут управлять случайные пользователи, которые часто ничего не знают о самом Docker. Я делаю приложение максимально настраиваемым с самого веб-сервера.

Он запускает 3 не- root контейнера:

  • Контейнер 1: Gunicorn, Django, Certbot
  • Контейнер 2: Nginx
  • Контейнер 3: Postgresql

Я могу позволить приложению Django запускать certbot через сам веб-сайт, чтобы получить сертификат и скопировать сертификат в том, который nginx является с помощью. Но старый или самозаверяющий сертификат, похоже, кэшируется nginx при запуске, и поэтому новый сертификат не используется до перезапуска nginx.

И вот проблема, теперь я должен перезапустить nginx или как-то автоматически перезагрузить сертификаты. Либо путем запуска перезапуска из контейнера Django в контейнер Nginx, возможно, через завиток или что-то в этом роде. Или я могу использовать что-то вроде сторожевого пса, чтобы следить за файлами на предмет изменения файла.

Вопрос:

Как лучше всего перезагружать nginx автоматически при изменении сертификата? Или я могу очистить кеш сертификатов от сертификатов даже без перезапуска сервера? Что вы предлагаете здесь?

Заранее спасибо за вашу помощь!

1 Ответ

1 голос
/ 17 июня 2020

перезагрузки должно быть достаточно для загрузки новых сертификатов.

Некоторые параметры:

  • Использовать хост cron для перезагрузки nginx

0 */6 * * * docker exec <nginx_container_name> nginx -s reload

  • Используйте обработчик развертывания certbot (вам нужно запустить certbot в контейнере nginx или придумать способ сделать этот обработчик развертывания удаленным)
/etc/letsencrypt/cli.ini:
deploy-hook = nginx -s reload
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...