09.07.2026
docker nginx letsencrypt proxy
Как настроить 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.