Frod

14.10.2026

nginx reverse proxy docker compose

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

Nginx Reverse Proxy Docker Compose: Полное руководство для безопасной и масштабируемой инфраструктуры

В современном мире, где безопасность и удобство доступа к ресурсам играют ключевую роль, использование nginx в качестве обратного прокси — один из лучших способов управлять трафиком и обеспечивать безопасность. Особенно актуально это в контексте развертывания с помощью Docker Compose — мощного инструмента для оркестрации контейнеров.

В этой статье разберемся, что такое nginx reverse proxy в Docker Compose, зачем это нужно, и как правильно настроить такую систему.

Почему именно nginx в роли reverse proxy?

Nginx — один из самых популярных веб-серверов и балансировщиков нагрузки благодаря своей высокой скорости, низкому потреблению ресурсов и гибкости. В роли reverse proxy он позволяет:

  • Распределять входящий трафик между несколькими серверными приложениями.
  • Обеспечивать безопасный HTTPS-доступ через автоматическую настройку SSL.
  • Обеспечивать маршрутизацию по различным доменам и поддоменам.
  • Защищать внутренние ресурсы от прямого доступа из Интернета.
  • Легко масштабировать инфраструктуру.

Почему Docker Compose?

Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений. Он позволяет описать всю инфраструктуру в простом YAML-файле, что облегчает деплой и управление.

Использование nginx с Docker Compose — идеальный вариант для локальной разработки, тестирования и даже небольших продакшен-сред.

Как настроить nginx reverse proxy в Docker Compose

Рассмотрим пример, где nginx выступает в роли обратного прокси для нескольких сервисов.

Пример файла docker-compose.yml

version: '3.8'

services:
 nginx:
 image: nginx:latest
 container_name: nginx_reverse_proxy
 ports:
 - "80:80"
 - "443:443"
 volumes:
 - ./nginx.conf:/etc/nginx/nginx.conf:ro
 - ./certs:/etc/ssl/certs:ro
 - ./keys:/etc/ssl/private:ro
 networks:
 - webnet

 app1:
 image: myapp1:latest
 container_name: app1
 networks:
 - webnet
 restart: always

 app2:
 image: myapp2:latest
 container_name: app2
 networks:
 - webnet
 restart: always

networks:
 webnet:

Конфигурация nginx (nginx.conf)

events {
 worker_connections 1024;
}

http {
 server {
 listen 80;
 server_name example.com www.example.com;
 return 301 https://$host$request_uri;
 }

 server {
 listen 443 ssl;
 server_name example.com www.example.com;

 ssl_certificate /etc/ssl/certs/fullchain.pem;
 ssl_certificate_key /etc/ssl/private/privkey.pem;

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

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

Важные моменты при настройке

  • SSL-сертификаты: Используйте Let's Encrypt или другие авторитетные CA для получения бесплатных сертификатов.
  • Обработка путей: В конфигурации nginx важно правильно настроить proxy_pass, особенно если ваши приложения используют разные базовые пути.
  • Безопасность: Не забывайте обновлять nginx и Docker, а также ограничивать доступ к конфигурационным файлам.

Итоги

Настройка nginx reverse proxy в Docker Compose — это мощное решение, которое позволяет легко управлять трафиком, повышать безопасность и масштабировать инфраструктуру. Такой подход особенно актуален для разработки и небольших проектов, но при грамотной настройке его можно использовать и в продакшене.

Если вы хотите автоматизировать обновление сертификатов, присмотритесь к инструментам Let's Encrypt и Certbot, интеграция которых с nginx и Docker Compose не составляет труда.