Реализация Trusted Proxy Chain для X-Forwarded-For в Nginx

1 Подготовка окружения
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/
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