Копирование запросов на другой бекэнд
С помощью nginx можно организовать копирование запросов на тестовый бэкэнд так чтобы ответ с него НЕ возвращался пользователю:
в секции server:
location ~ \.php$ { # Основные дикертивы ... # Выполнить дополнительный запрос в @postact post_action @postact; } # обработка копии запроса location @postact { # нужно чтобы сохранить исходный путь (uri) запроса rewrite (.*) $1 break; # отправить запрос на бекэнд proxy_pass http://1.22.333.4444:8080; # если нужно изменить хост заголовок proxy_set_header Host copy.test; # или оставить текущий proxy_set_header Host $host; # также установить исходный ip-клиента запроса, если необходимо proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; }
Другой интересный приём использования post_action: Как раздавать файлы по уникальному URL и отмечать окончание скачивания.
Обсуждение
У меня при подобной схеме почему-то дублируются только запросы по протоколу HTTP/1.0, а HTTP/1.1 - нет