Frod

15.10.2026

nginx reverse proxy конфиг для нескольких сервисов docker пример

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

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


Если вам нужен более сложный пример или помощь в настройке, обращайтесь — я всегда рад помочь!


Надеюсь, статья оказалась полезной. Если есть вопросы — задавайте!