07.10.2026
docker nginx letsencrypt proxy
Настройка безопасного прокси-сервера с 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, следуйте этим шагам, и уже через несколько минут ваш сайт будет защищен по стандартам современных технологий.