23.07.2026
docker nginx letsencrypt proxy
Обеспечиваем безопасность и автоматизацию: как настроить Docker Nginx с Let's Encrypt для проксирования
В современном мире безопасность и удобство — два кита, на которых строится любой успешный веб-проект. Особенно для российских разработчиков и администраторов важно не только запускать сервисы, но и делать это безопасно, автоматизированно и без лишних хлопот. В этой статье я расскажу, как использовать Docker с Nginx, чтобы настроить обратный прокси и автоматически получать бесплатные SSL-сертификаты от Let's Encrypt.
Почему именно Docker, Nginx и Let's Encrypt?
- Docker — это контейнеризация, которая позволяет запускать приложения в изолированном и управляемом окружении. Это удобно и надежно.
- Nginx — мощный веб-сервер и обратный прокси, который отлично справляется с балансировкой нагрузки и маршрутизацией.
- Let's Encrypt — бесплатный сертификатный центр, предоставляющий SSL-сертификаты с автоматическим обновлением.
Совместное использование этих технологий позволяет создать гибкую, безопасную и автоматизированную инфраструктуру.
Пошаговая настройка: от установки до автоматического обновления сертификатов
- Создаем Docker-композицию (docker-compose.yml)
Первое, что нужно — подготовить docker-compose.yml, где будет описано наше окружение.
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- ./certs:/etc/letsencrypt:ro
- ./html:/usr/share/nginx/html:ro
networks:
- proxy-network
certbot:
image: certbot/certbot
container_name: certbot
volumes:
- ./certs:/etc/letsencrypt
- ./nginx/conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /usr/share/nginx/html; sleep 12h & wait $${!}; done;'"
networks:
- proxy-network
networks:
proxy-network:
Этот файл создаст два сервиса: Nginx и Certbot (клиент Let's Encrypt). Важно, что сертификаты сохраняются в общем каталоге (./certs), что позволяет их автоматически обновлять.
- Настраиваем конфигурацию Nginx
Создаем файл nginx/conf.d/yourdomain.conf с примерно таким содержанием:
server {
listen 80;
server_name yourdomain.ru;
location /.well-known/acme-challenge/ {
root /usr/share/nginx/html;
}
location / {
return 301 https://$host$request_uri;
}
}
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:port;
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 и использует SSL-сертификаты из Let's Encrypt.
- Получение сертификатов
Перед запуском убедитесь, что ваш домен правильно указывает на сервер. После этого выполните команду:
docker-compose run --rm certbot certonly --webroot -w /usr/share/nginx/html -d yourdomain.ru
Это инициирует получение сертификата. После успешного получения, при следующем запуске контейнеров, Nginx будет использовать сертификаты.
- Автоматизация обновления сертификатов
Благодаря тому, что в docker-compose.yml в контейнере certbot настроен цикл обновления, сертификаты будут автоматически обновляться каждые 12 часов. Не забудьте перезапустить Nginx после обновления сертификатов, чтобы изменения вступили в силу.
Для автоматической перезагрузки Nginx после обновления сертификатов добавьте в конфиг certbot команду перезапуска. Или сделайте отдельный скрипт.
Итог
Использование Docker + Nginx + Let's Encrypt — это надежный и современный способ обеспечить безопасность своего сайта. Всё автоматизировано, не требует постоянного вмешательства и позволяет сосредоточиться на развитии проекта.
Если вы хотите быстро запустить защищённый сайт или API, следуйте этим шагам — и всё получится. А если возникнут вопросы, всегда можно обратиться к сообществу или профильным форумам.
Ключевые слова: docker nginx letsencrypt proxy, автоматизация ssl, настройка обратного прокси, безопасность веб-сервиса, контейнеризация веб-приложений.