Как nginx в паре с docker обрабатывает ссылочные файлы? - PullRequest
0 голосов
/ 24 января 2020

Я запускаю докеризованное приложение django. Я развернул его на EC2. Nginx также находится в docker контейнере. Nginx в моем docker -контейнере настроен так, что он использует ssl-сертификаты от Lets Encrypt.

Позволяет шифровать сертификаты только в течение 90 дней, поэтому я установил cronjob для их продления.

Мой вопрос теперь таков: будет ли мой nginx, работающий в контейнере docker, автоматически использовать обновленный файл? Или мне нужно снова развернуть мой контейнер docker и собрать его заново, чтобы изменения вступили в силу? В последнем случае можно ли указать nginx использовать обновленный файл, чтобы мне не пришлось перестраивать свой контейнер? Я спрашиваю, потому что я хотел бы минимизировать время простоя для моего приложения.

Для большей ясности я предоставляю свой конфиг. Важные файлы - это ssl-сертификаты, на которые есть ссылки:

server {

    listen 443 ssl;
    server_name mydomain;
    charset utf-8;
    ssl_stapling off;
    ssl_stapling_verify off;

    ssl_certificate        /etc/letsencrypt/live/mydomain/fullchain.pem;
    ssl_certificate_key   /etc/letsencrypt/live/mydomain/privkey.pem;


    location / {
        proxy_pass http://django:5000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Здесь мой составной файл:

  production-nginx-container:
    container_name: 'production-nginx-container'
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
       - /home/ubuntu/nginx-conf/myconf.conf:/etc/nginx/conf.d/default.conf
       - /etc/letsencrypt/live/mydomain/fullchain.pem:/etc/letsencrypt/live/mydomain/fullchain.pem
       - /etc/letsencrypt/live/mydomain/privkey.pem:/etc/letsencrypt/live/mydomain/privkey.pem
    depends_on:
      - django

Я вижу только два варианта: либо nginx сохраняет этот файл открытым все время пока мой docker контейнер работает или нет.

Если он остается открытым, я предполагаю, что мне нужно перезапустить контейнер docker, который мне не нужен :).

Буду признателен за любой вклад! Заранее спасибо!

1 Ответ

1 голос
/ 25 января 2020

Nginx читает сертификаты / конфиги, предоставленные при запуске. Чтобы перечитать их, вы можете перезапустить nginx (контейнер) или отправить reload сигнал на nginx:

nginx -s reload - команда в контейнере. Также в сочетании с nginx -t заранее, чтобы проверить, что синтаксис файлов конфигурации в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...