Frod

29.07.2026

docker nginx letsencrypt proxy

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

Как настроить безопасный прокси с 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, вы получаете современное и безопасное решение для веб-проектов в России. Такой подход позволяет легко масштабировать инфраструктуру, автоматизировать процессы и обеспечить высокий уровень безопасности.