Это старая версия документа!
Реализация 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/
- Проверьте содержимое директории 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
