nginx reverse proxy docker compose

🔧 Настройка туннеля 📡 Протоколы шифрования 🔗 Безопасность соединения 🚫 Защита от утечек 🧩 Туннельные протоколы 🔐 Криптография

nginx reverse proxy docker compose

image
image

Настройка 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, и ваш сервер будет работать как часы.

Если возникнут вопросы — не стесняйтесь искать ответы в документации или обращаться к сообществу. Впереди — быстрая и безопасная работа ваших сервисов!


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

🔧 Настройка туннеля 📡 Протоколы шифрования 🔗 Безопасность соединения 🚫 Защита от утечек 🧩 Туннельные протоколы 🔐 Криптография

Присоединиться к обсуждению

Комментариев пока нет.

Оставить комментарий

Решите простую математическую задачу для защиты от ботов