====== Реализация Trusted Proxy Chain для X-Forwarded-For в Nginx ====== **[[vji:trusted_proxy1:start| 1 Подготовка окружения]]**\\ **[[vji:trusted_proxy2:start| 2 Создание всех необходимых файлов]]**\\ **3 Проверка структуры файлов** * Проверьте, что все файлы созданы ls -la * Должны увидеть: -rw-r--r-- app.py -rw-r--r-- docker-compose.yml -rw-r--r-- Dockerfile -rw-r--r-- requirements.txt drwxr-xr-x nginx/ * Проверьте содержимое директории nginx ls -la nginx/ * Должны увидеть: -rw-r--r-- nginx1.conf -rw-r--r-- nginx2.conf -rw-r--r-- nginx3.conf **4 Запуск стенда** \\ 4.1 Сборка и запуск контейнеров \\ * Первый запуск (сборка образов) docker-compose up -d --build '' Что означает каждая опция:\\ up - запуск контейнеров\\ -d - detached mode (в фоновом режиме)\\ --build - пересобрать образы перед запуском '' 4.2 Проверка статуса контейнеров \\ Просмотр работающих контейнеров docker-compose ps ''Должны увидеть 4 контейнера со статусом "Up"'' 4.3 Проверка логов (если нужно отладить) \\ Логи всех контейнеров docker-compose logs Логи конкретного контейнера docker-compose logs nginx1 docker-compose logs app Логи в реальном времени docker-compose logs -f **5 Тестирование базовой функциональности**\\ 5.1 Быстрая проверка (ручной тест)\\ Проверка, что приложение отвечает через nginx1\\ curl http://localhost:8081/ Ожидаемый ответ:\\ ''{"message":"X-Forwarded-For header received","value":"172.x.x.x","client_ip":"172.x.x.x",...}''\\ 5.2 Проверка всех цепочек\\ Проверка прямой маршрут\\ curl -s http://localhost:8081/ | jq '.value' Проверка цепочки из двух прокси\\ curl -s http://localhost:8081/via2/ | jq '.value' Проверка цепочки из трех прокси\\ curl -s http://localhost:8081/via2-3/ | jq '.value' 5.3 Проверка защиты от подделки\\ Попытка подменить IP\\ curl -s -H "X-Forwarded-For: 1.2.3.4" http://localhost:8081/ | jq '.value' Должен вернуться реальный IP, а не 1.2.3.4