docker nginx letsencrypt proxy

🔧 Настройка туннеля 📡 Протоколы шифрования 🔗 Безопасность соединения 🚫 Защита от утечек 🧩 Туннельные протоколы 🔐 Криптография

docker nginx letsencrypt proxy

image
image

Как настроить Docker с Nginx и Let's Encrypt для автоматического получения SSL-сертификатов

В современном мире безопасность веб-приложений — не просто опция, а необходимость. Особенно, если вы развертываете сайты или API в контейнерах Docker. В этой статье я расскажу, как с помощью Docker, Nginx и Let's Encrypt организовать надежный proxy-сервер с автоматическим получением и обновлением SSL-сертификатов. Всё просто, понятно и без лишней воды.

Почему именно Docker, Nginx и Let's Encrypt?

  • Docker позволяет изолировать ваши сервисы, делая их переносимыми и легко управляемыми.
  • Nginx — мощный и гибкий веб-сервер, отлично выступает в роли reverse proxy.
  • Let's Encrypt — бесплатный центр сертификации, который автоматизирует выдачу и обновление SSL-сертификатов.

Использование этих инструментов вместе — проверенное решение для обеспечения безопасности и высокой доступности ваших сайтов.

Основные шаги для настройки

  1. Создаем Docker-контейнер с Nginx

Для начала подготовим Dockerfile или используем официальный образ Nginx. В качестве примера возьмем готовый образ:

version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./certs:/etc/letsencrypt:ro
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
  certbot:
    image: certbot/certbot
    volumes:
      - ./certs:/etc/letsencrypt
      - ./html:/usr/share/nginx/html
    command: certonly --webroot --webroot-path=/usr/share/nginx/html -d example.ru -d www.example.ru --agree-tos --non-interactive --email admin@example.ru
  1. Настраиваем Nginx как proxy с поддержкой SSL

Создайте конфигурационный файл nginx.conf:

server {
    listen 80;
    server_name example.ru www.example.ru;

    location /.well-known/acme-challenge/ {
        root /usr/share/nginx/html;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name example.ru www.example.ru;

    ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;

    location / {
        proxy_pass http://your_app_upstream;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Эта конфигурация перенаправляет HTTP-запросы на HTTPS и использует сертификаты, полученные через Let's Encrypt.

  1. Автоматизация получения и обновления сертификатов

Для автоматического получения сертификатов используйте Certbot внутри Docker или на хосте. Можно настроить cron-задание для регулярного обновления сертификатов:

0 12 * * * docker run --rm -it -v $(pwd)/certs:/etc/letsencrypt certbot/certbot renew --webroot -w /usr/share/nginx/html

После обновления сертификатов потребуется перезапуск Nginx, чтобы он подхватил новые сертификаты.

Итог

Объединив Docker, Nginx и Let's Encrypt, вы получаете надежный и автоматизированный proxy-сервер с SSL, который легко масштабировать и управлять им. Такой подход — отличное решение для тех, кто ценит безопасность, удобство и современную инфраструктуру.


Если нужно, я могу подготовить более детальную инструкцию, добавить автоматизацию с Docker Compose или дать советы по безопасности.

🔧 Настройка туннеля 📡 Протоколы шифрования 🔗 Безопасность соединения 🚫 Защита от утечек 🧩 Туннельные протоколы 🔐 Криптография

Присоединиться к обсуждению

Комментариев пока нет.

Оставить комментарий

Решите простую математическую задачу для защиты от ботов