Frod

07.10.2026

docker nginx letsencrypt proxy

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

Настройка безопасного прокси-сервера с Docker, Nginx и Let's Encrypt в России

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

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

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

Шаг 1: Создаем Docker-контейнер с Nginx

Для начала подготовим docker-compose.yml:

version: '3'
services:
 nginx:
 image: nginx:latest
 ports:
 - "80:80"
 - "443:443"
 volumes:
 - ./nginx.conf:/etc/nginx/nginx.conf:ro
 - ./certs:/etc/letsencrypt
 - ./html:/usr/share/nginx/html
 restart: unless-stopped

Это базовая конфигурация, которая монтирует конфигурационный файл Nginx и директории для сертификатов.


Шаг 2: Настройка Nginx как прокси

Создайте файл nginx.conf:

events {}

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

Обратите внимание, что для автоматического получения сертификатов потребуется настроить скрипт или контейнер, который будет взаимодействовать с Let's Encrypt.


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

Для автоматизации можно использовать Certbot или встроенные инструменты, например, nginx-proxy + docker-letsencrypt-nginx-proxy-companion. Ниже пример использования docker-compose для автоматического получения сертификатов:

version: '3'

services:
 nginx-proxy:
 image: jwilder/nginx-proxy
 container_name: nginx-proxy
 ports:
 - "80:80"
 - "443:443"
 volumes:
 - /var/run/docker.sock:/tmp/docker.sock:ro
 - ./certs:/etc/nginx/certs:ro
 - ./vhost.d:/etc/nginx/vhost.d
 - ./html:/usr/share/nginx/html
 - ./nginx.conf:/etc/nginx/conf.d/custom.conf
 restart: unless-stopped

 letsencrypt:
 image: jrcs/letsencrypt-nginx-proxy-companion
 environment:
 NGINX_PROXY_CONTAINER: nginx-proxy
 ACME_CA_URI: https://acme-v02.api.letsencrypt.org/directory
 volumes:
 - /var/run/docker.sock:/var/run/docker.sock:ro
 - ./certs:/etc/nginx/certs
 - ./vhost.d:/etc/nginx/vhost.d
 - ./html:/usr/share/nginx/html
 restart: unless-stopped

После запуска контейнеров достаточно указать переменную окружения VIRTUAL_HOST=yourdomain.ru для вашего сервиса, и сертификаты будут автоматически выданы и обновляться.


Итог

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

Если вы хотите быстро запустить свой прокси-сервер с автоматическим SSL, следуйте этим шагам, и уже через несколько минут ваш сайт будет защищен по стандартам современных технологий.