[[ Копирование запросов на другой бекэнд ]]

Копирование запросов на другой бекэнд

С помощью 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 и отмечать окончание скачивания.

Обсуждение

Илья, 2015/10/09 16:20

У меня при подобной схеме почему-то дублируются только запросы по протоколу HTTP/1.0, а HTTP/1.1 - нет :-(

Ваш комментарий. Вики-синтаксис разрешён:
100᠎ -3 = 
 
practice/nginx/копирование_запросов.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki