29.07.2026
docker nginx letsencrypt proxy
Как настроить безопасный прокси с Docker, Nginx и Let's Encrypt в России
В современном мире безопасность и надежность — ключевые показатели любого веб-проекта. Особенно, если вы используете контейнеризацию и автоматизацию — такие как Docker — для масштабирования и быстрого развертывания. В этой статье я расскажу, как настроить полноценный прокси-сервер с использованием Docker, Nginx и Let's Encrypt, чтобы обеспечить безопасность и автоматическое обновление SSL-сертификатов.
Почему именно Docker, Nginx и Let's Encrypt?
- Docker позволяет быстро создавать изолированные окружения, управлять ими и легко масштабировать.
- Nginx — мощный и гибкий веб-сервер и обратный прокси, который отлично подходит для балансировки нагрузки и маршрутизации.
- Let's Encrypt — бесплатный центр сертификации, предлагающий автоматическое получение и обновление SSL-сертификатов.
Совместная работа этих технологий — отличный выбор для российских компаний и разработчиков, которые ценят безопасность и удобство.
Шаг 1. Создаем Docker-контейнер с Nginx
Самое первое — подготовить Docker-контейнер с Nginx, выступающим в роли обратного прокси. Для этого создадим docker-compose.yml:
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx_proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./certs:/etc/letsencrypt/live
- ./certbot/conf:/etc/letsencrypt
restart: unless-stopped
networks:
- webnet
certbot:
image: certbot/certbot
container_name: certbot
volumes:
- ./certs:/etc/letsencrypt
- ./webroot:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
networks:
- webnet
networks:
webnet:
Этот файл запускает контейнеры для Nginx и Certbot (клиент Let's Encrypt).
Шаг 2. Настраиваем конфигурацию Nginx
Создайте файл nginx.conf со следующим содержанием:
events {}
http {
server {
listen 80;
server_name yourdomain.ru www.yourdomain.ru;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name yourdomain.ru www.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://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;
}
}
}
Обратите внимание, что нужно заменить yourdomain.ru на свой домен и настроить proxy_pass на свой бэкенд.
Шаг 3. Получение SSL-сертификата
Запустите команду для первоначального получения сертификата:
docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot -d yourdomain.ru -d www.yourdomain.ru --email your_email@example.com --agree-tos --no-eff-email
После этого ваши сертификаты появятся в папке certs. Certbot будет автоматически их обновлять каждые 60 дней.
Шаг 4. Запуск всего стека
Запустите контейнеры:
docker-compose up -d
Теперь ваш сайт защищен SSL и работает через прокси, обеспечивая безопасность данных и удобство управления.
Итог
Используя Docker, Nginx и Let's Encrypt, вы получаете современное и безопасное решение для веб-проектов в России. Такой подход позволяет легко масштабировать инфраструктуру, автоматизировать процессы и обеспечить высокий уровень безопасности.