Практическое задание 1: Nginx Proxy
🌐 Настройка Nginx для проксирования - Развертывание локальных сайтов
📋 Описание задания
Скачать пару сайтов с GitHub, развернуть локально у себя nginx и проксировать оба сайта на два разных порта. Настроить полноценную инфраструктуру для разработки с использованием Nginx в качестве reverse proxy. Можно использовать как локальное развертывание, так и Docker для контейнеризации.
🎯 Цели задания
- Изучение работы с Nginx
- Настройка проксирования и reverse proxy
- Работа с локальными репозиториями
- Понимание веб-серверов и портов
- Освоение Docker для веб-разработки
- Создание инфраструктуры для разработки
Основные требования:
- Скачать два сайта с GitHub - выбрать любые два веб-проекта
- Развернуть локально - настроить локальную среду разработки
- Настроить Nginx - создать конфигурацию для проксирования
- Проксировать на разные порты - каждый сайт на свой порт
🐳 Использование Docker (опционально):
- Nginx в Docker - использовать готовый образ nginx
- Сайты в контейнерах - каждый сайт в отдельном контейнере
- Docker Compose - оркестрация всех сервисов
- Изоляция окружения - чистая среда для экспериментов
💻 Локальное развертывание (альтернатива):
- Установка Nginx - установить Nginx локально на систему
- Локальные серверы - запустить сайты на локальных портах
- Конфигурация Nginx - настроить проксирование на локальные порты
- Простота настройки - быстрый старт без Docker
Материалы для сдачи:
- Скринкаст с демонстрацией:
- Локальные репозитории обоих сайтов
- Конфигурация Nginx (локально или в Docker)
- Открытые сайты в браузере на соответствующих портах
- Работа сервисов (локально или в Docker контейнерах)
📊 Система оценивания
- Полное выполнение: Максимальная оценка (2 балла)
- Частичное выполнение: Преподаватель дает обратную связь и просит переделать
- Пересдача: Возможна после исправления замечаний
⏰ Сроки выполнения
- Очное выполнение: 2 балла (выполнение на практическом занятии)
- Домашнее выполнение: 1 балл (скринкаст с демонстрацией)
🛠 Технические требования
Обязательные компоненты:
- Nginx reverse proxy - основной entry point
- Два веб-сайта - каждый на своем порту
Опциональные компоненты (выберите один подход):
- Docker контейнеры - для всех сервисов (Docker подход)
- Docker Compose - для оркестрации (Docker подход)
- Локальные серверы - запуск сайтов на локальных портах (локальный подход)
Примеры конфигураций:
- Nginx reverse proxy - изучите документацию по настройке проксирования
- Docker Compose - настройте оркестрацию сервисов (если используете Docker)
- Локальная настройка - настройте Nginx для работы с локальными портами
🔗 Полезные ресурсы
Nginx и проксирование:
- Nginx Documentation - официальная документация
- Nginx Proxy Configuration - настройка прокси
- Nginx Reverse Proxy - reverse proxy руководство
- Nginx Beginner's Guide - руководство для начинающих
- DigitalOcean Nginx Tutorial - установка и настройка
- Nginx Configuration Examples - примеры конфигураций
Docker и контейнеризация:
- Docker Nginx - официальный образ Nginx
- Docker Compose - оркестрация контейнеров
- Docker Best Practices - лучшие практики
- Docker Compose Tutorial - обучение Docker Compose
- Docker Networking - сетевые настройки Docker
- Docker Multi-container Apps - многоконтейнерные приложения
Локальная разработка:
- How to Install Nginx - установка Nginx
- Nginx Local Development - локальная разработка
- Static File Serving - обслуживание статических файлов
- Local Server Setup - настройка локального сервера
Веб-проекты для практики:
- GitHub - поиск веб-проектов
- GitHub - статические сайты
- GitHub - React приложения
- GitHub - Vue.js приложения
- GitHub - Node.js приложения
Дополнительные туториалы:
- Nginx Reverse Proxy Tutorial - настройка reverse proxy
- Docker + Nginx Tutorial - Docker + Nginx
- Multiple Sites with Nginx - несколько сайтов
- Nginx Configuration Guide - конфигурация HTTPS
📁 Структура проекта
Docker подход:
practical-1-nginx-proxy/
├── sites/
│ ├── site-1/ # Первый скачанный сайт
│ │ ├── Dockerfile # Dockerfile для первого сайта
│ │ ├── package.json # Зависимости (если Node.js)
│ │ └── src/ # Исходный код сайта
│ └── site-2/ # Второй скачанный сайт
│ ├── Dockerfile # Dockerfile для второго сайта
│ ├── package.json # Зависимости (если Node.js)
│ └── src/ # Исходный код сайта
├── nginx/
│ └── nginx.conf # Конфигурация Nginx
├── docker-compose.yml # Оркестрация всех сервисов
├── README.md # Описание проекта
└── screenshots/ # Скриншоты демонстрации
Локальный подход:
practical-1-nginx-proxy/
├── site-1/ # Первый скачанный сайт
│ ├── package.json # Зависимости (если Node.js)
│ └── src/ # Исходный код сайта
├── site-2/ # Второй скачанный сайт
│ ├── package.json # Зависимости (если Node.js)
│ └── src/ # Исходный код сайта
├── nginx.conf # Конфигурация Nginx
├── README.md # Описание проекта
└── screenshots/ # Скриншоты демонстрации
📋 Чек-лист выполнения
Подготовка:
- [ ] Выбраны два веб-проекта с GitHub
- [ ] Скачаны репозитории локально
- [ ] Изучена структура каждого проекта
- [ ] Определены порты для каждого сайта
Docker настройка (опционально):
- [ ] Создан Dockerfile для первого сайта
- [ ] Создан Dockerfile для второго сайта
- [ ] Настроен docker-compose.yml
- [ ] Протестирована сборка контейнеров
Локальная настройка (альтернатива):
- [ ] Установлен Nginx локально
- [ ] Настроены локальные серверы для сайтов
- [ ] Проверена работа сайтов на локальных портах
- [ ] Настроена конфигурация Nginx для локальных портов
Nginx конфигурация:
- [ ] Создана конфигурация nginx.conf
- [ ] Настроены location блоки для каждого сайта
- [ ] Добавлены proxy_set_header директивы
- [ ] Протестирована конфигурация
Интеграция:
- [ ] Запущены все сервисы (Docker или локально)
- [ ] Проверена доступность сайтов через Nginx
- [ ] Протестированы все маршруты
- [ ] Проверена работа в браузере
Демонстрация:
- [ ] Подготовлен скринкаст с демонстрацией
- [ ] Показана работа обоих сайтов
- [ ] Продемонстрирована конфигурация
- [ ] Задокументированы результаты
🧪 Тестирование
Обязательные тесты:
- Доступность сайтов - оба сайта открываются через Nginx
- Проксирование - запросы корректно перенаправляются
- Сервисы - все сервисы запущены и работают (Docker или локально)
- Конфигурация - Nginx корректно обрабатывает маршруты
Дополнительные тесты:
- Производительность проксирования
- Обработка ошибок (недоступные сервисы)
- Логирование запросов
- Масштабирование (добавление новых сайтов)
🚀 Примеры веб-проектов
Статические сайты:
- HTML5 Boilerplate - готовый HTML5 шаблон
- Bootstrap Examples - примеры Bootstrap
- Landing Page Templates - шаблоны лендингов
- Simple HTML Templates - простые HTML шаблоны
React приложения:
- Create React App - стандартный React стартер
- React Starter Kit - продвинутый React стартер
- Next.js Examples - примеры Next.js приложений
- React Portfolio Templates - портфолио на React
Vue.js приложения:
- Vue.js Examples - примеры Vue.js
- Nuxt.js Starter - Nuxt.js стартер
- Vue Portfolio Templates - портфолио на Vue
Node.js приложения:
- Express Starter - Express.js стартеры
- Node.js Examples - примеры Node.js
- Simple Web Servers - простые веб-серверы
Последнее обновление: Январь 2025