nginx reverse proxy docker compose

Настройка nginx reverse proxy с Docker Compose: полный гайд для начинающих и профи
Если вы занимаетесь разработкой или администрированием веб-сервисов, то наверняка сталкивались с задачей организации безопасного и удобного доступа к нескольким приложениям на одном сервере. В таких случаях отлично помогает nginx в роли обратного прокси (reverse proxy). А если использовать Docker Compose — то все становится проще и нагляднее. В этой статье расскажу, как настроить nginx reverse proxy с Docker Compose — пошагово, понятно и без лишней воды.
Почему nginx reverse proxy важен?
Обратный прокси — это сервер, который принимает входящие запросы и перенаправляет их на нужные внутренние сервисы. В случае с nginx это делается очень просто и эффективно благодаря его высокой производительности и гибкости.
Преимущества nginx reverse proxy:
- Управление несколькими сайтами и приложениями на одном IP.
- SSL-терминация для безопасного HTTPS-соединения.
- Балансировка нагрузки между серверами.
- Кеширование и ускорение работы.
- Обеспечение безопасности и скрытие внутренних сервисов.
Почему Docker Compose?
Docker Compose позволяет описать сложную инфраструктуру в виде одного файла YAML. Это делает развертывание и управление гораздо проще, особенно при работе с несколькими сервисами. В связке nginx + Docker Compose вы получаете:
- быстрое развёртывание;
- изоляцию сервисов;
- возможность легко обновлять конфигурацию.
Как настроить nginx reverse proxy с Docker Compose: пошаговая инструкция
Шаг 1. Подготовьте папки и файлы
Создайте структуру проекта:
my-reverse-proxy/
├── docker-compose.yml
├── nginx/
│ ├── nginx.conf
│ └── ssl/
│ └── your_cert.crt
│ └── your_key.key
Шаг 2. Напишите docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx_reverse_proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./nginx/ssl:/etc/nginx/ssl:ro
networks:
- proxy_net
networks:
proxy_net:
driver: bridge
Этот файл запускает nginx, монтирует конфигурацию и SSL-сертификаты.
Шаг 3. Настройте nginx.conf
Создайте файл nginx/nginx.conf с примером базовой конфигурации:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri; # Перенаправление на HTTPS
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/your_cert.crt;
ssl_certificate_key /etc/nginx/ssl/your_key.key;
location /app1/ {
proxy_pass http://app1:8080/;
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;
rewrite ^/app1(/.*)$ $1 break;
}
location /app2/ {
proxy_pass http://app2:5000/;
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;
rewrite ^/app2(/.*)$ $1 break;
}
}
Обратите внимание: proxy_pass с именами app1 и app2 предполагает, что эти сервисы тоже запущены в Docker Compose и находятся в одной сети.
Шаг 4. Добавьте ваши приложения
Пример docker-compose.yml для приложений:
services:
app1:
image: your_app1_image
networks:
- proxy_net
# дополнительные настройки
app2:
image: your_app2_image
networks:
- proxy_net
# дополнительные настройки
networks:
proxy_net:
driver: bridge
Обратите внимание, что все сервисы подключены к одной сети proxy_net, что позволяет nginx обращаться к ним по именам.
Шаг 5. Запускаем всё вместе
В корне папки my-reverse-proxy выполните:
docker-compose up -d
Теперь nginx будет слушать порты 80 и 443, перенаправляя трафик на ваши внутренние приложения.
Полезные советы и нюансы
- SSL: для HTTPS используйте сертификаты Let's Encrypt или свои. Можно автоматизировать получение сертификатов с помощью
certbotили встроенных решений. - Обновление конфигурации: при изменении
nginx.conf— перезапустите nginx внутри контейнера:docker-compose restart nginx. - Логи и отладка: проверяйте логи nginx через
docker logs nginx_reverse_proxy. - Безопасность: обязательно настраивайте файрволлы и используйте актуальные SSL-протоколы.
Итог
Настройка nginx reverse proxy с Docker Compose — отличный выбор для тех, кто хочет гибко управлять несколькими приложениями и обеспечить им безопасность и стабильность. Всё, что нужно — это немного YAML, базовые знания nginx и Docker, и ваш сервер будет работать как часы.
Если возникнут вопросы — не стесняйтесь искать ответы в документации или обращаться к сообществу. Впереди — быстрая и безопасная работа ваших сервисов!
Если нужен более технический или упрощённый вариант — скажите, я подготовлю дополнительно!
Присоединиться к обсуждению
Комментариев пока нет.
Оставить комментарий