15.10.2026
nginx reverse proxy конфиг для нескольких сервисов docker пример
Nginx reverse proxy конфиг для нескольких сервисов Docker: пример и пошаговая инструкция
В современном мире разработки и развертывания приложений использование Docker стало практически стандартом. Однако управление несколькими сервисами на одном сервере требует аккуратной настройки — и тут на помощь приходит nginx в роли обратного прокси. В этой статье я расскажу, как настроить nginx reverse proxy для нескольких сервисов Docker, приведу пример конфигурации и объясню все ключевые моменты.
Почему именно nginx как reverse proxy?
Nginx — популярный и мощный веб-сервер, который отлично справляется с ролью обратного прокси. Он умеет балансировать нагрузку, маршрутизировать трафик по различным доменам и поддоменам, а также обеспечивать безопасность и кеширование. В случае с Docker это особенно важно, ведь контейнеры зачастую работают на одних и тех же портах, а nginx помогает «разграничить» их по доменным именам.
Общая схема настройки
Перед настройкой убедитесь, что у вас:
- установлен Docker и Docker Compose (или отдельные контейнеры для каждого сервиса),
- есть доменное имя или поддомены для каждого сервиса,
- nginx запущен на хосте и имеет доступ к конфигурационным файлам.
Итак, базовая идея — запустить nginx в контейнере, а внутри него настроить конфигурацию для каждого сервиса, который работает в Docker на определенном порту или через internal network.
Пример конфигурации nginx reverse proxy для нескольких сервисов Docker
Предположим, у вас есть два сервиса:
- blog.example.com — работает в Docker на порту 8081
- shop.example.com — работает в Docker на порту 8082
Шаг 1. Создание сети Docker
Рекомендуется создать отдельную сеть для контейнеров для облегчения маршрутизации:
docker network create nginx-proxy-net
Шаг 2. Запуск сервисов с подключением к сети
Пример запуска сервисов:
docker run -d --name blog --network nginx-proxy-net -p 8081:80 your-blog-image
docker run -d --name shop --network nginx-proxy-net -p 8082:80 your-shop-image
Шаг 3. Настройка nginx в Docker
Создайте файл nginx.conf со следующей конфигурацией:
http {
server {
listen 80;
server_name blog.example.com;
location / {
proxy_pass http://blog:80;
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;
}
}
server {
listen 80;
server_name shop.example.com;
location / {
proxy_pass http://shop:80;
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;
}
}
}
Обратите внимание: в proxy_pass мы используем имена контейнеров (blog, shop) — это возможно благодаря сети Docker.
Шаг 4. Запуск nginx контейнера с конфигурацией
docker run -d --name nginx-proxy --network nginx-proxy-net -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro nginx
Итог
Теперь при обращении к blog.example.com пользователь попадет на сервис, запущенный в Docker на порту 8081, а при заходе на shop.example.com — на другой сервис. Такой подход обеспечивает гибкую маршрутизацию и удобство управления.
Полезные советы
- Используйте Docker Compose — это упростит управление несколькими контейнерами.
- Для более сложных сценариев стоит рассмотреть использование nginx в качестве отдельного контейнера с конфигами, подключенными через volume.
- Для автоматизации SSL-сертификатов можно подключить Let’s Encrypt с помощью
certbotи nginx.
Итоговая рекомендация
Настройка nginx reverse proxy для нескольких сервисов Docker — это мощный инструмент для организации надежной и масштабируемой инфраструктуры. Следуя приведенному примеру, вы сможете легко управлять несколькими сервисами через один входящий пункт, делая свою систему более удобной и безопасной.
Если вам нужен более сложный пример или помощь в настройке, обращайтесь — я всегда рад помочь!
Надеюсь, статья оказалась полезной. Если есть вопросы — задавайте!