Svyaz

09.07.2026

docker nginx letsencrypt proxy

Svyaz VPN — свобода без границ

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

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

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

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

Совместное использование этих технологий обеспечивает безопасное, масштабируемое и автоматизированное решение.


Шаг 1: Подготовка Docker-окружения

Перед началом убедитесь, что у вас установлены Docker и Docker Compose. Для этого выполните:

docker --version
docker-compose --version

Если всё в порядке — идём дальше.


Шаг 2: Создаём docker-compose.yml

Этот файл объединит все необходимые сервисы: Nginx, Certbot (для получения сертификатов) и, по желанию, ваш веб-сайт.

Пример базовой конфигурации:

version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - certbot

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do sleep 12h & wait $${!}; done;'"

Здесь мы создаём два сервиса: nginx и certbot. В будущем добавим конфигурацию для автоматического получения сертификатов.


Шаг 3: Настройка Nginx как прокси-сервера

Создайте директорию nginx/conf.d и внутри файл site.conf:

server {
    listen 80;
    server_name yourdomain.ru;

    location / {
        proxy_pass http://your_backend_service;
        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;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }
}

Обратите внимание на блок /.well-known/acme-challenge/ — он нужен для автоматической проверки владения доменом при получении сертификата.


Шаг 4: Получение SSL-сертификатов с Let's Encrypt

Теперь запускать Certbot для получения сертификатов:

docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot -d yourdomain.ru --email your_email@example.com --agree-tos --no-eff-email

После успешного получения сертификатов их нужно скопировать в папку certbot/conf.


Шаг 5: Обновление конфигурации Nginx для HTTPS

Добавьте в site.conf блок для SSL:

server {
    listen 443 ssl;
    server_name yourdomain.ru;

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

    location / {
        proxy_pass http://your_backend_service;
        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;
    }
}

Также рекомендуется настроить автоматический обновление сертификатов — для этого можно создать cron-задание или настроить автоматические обновления внутри контейнера.


Итог

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

Если вы хотите создать собственный прокси-сервер с автоматическим обновлением сертификатов и высокой надежностью, следуйте этим шагам — и всё получится!


Краткое резюме

  • Используйте Docker Compose для объединения Nginx и Certbot.
  • Настройте Nginx как обратный прокси с поддержкой HTTPS.
  • Автоматизируйте получение и обновление SSL-сертификатов через Certbot.
  • Обеспечьте безопасность и надежность вашего сайта.

Если есть вопросы или нужны рекомендации по конкретным сценариям — пишите, помогу разобраться!


Надеюсь, эта статья поможет вам легко и быстро настроить безопасный прокси-сервер на базе Docker и Nginx с сертификатами Let's Encrypt.