Я пытаюсь использовать зеркальную директиву для регрессионного тестирования в моем приложении, однако у меня возникают трудности при попытке использовать стандартные функции перезаписи NGINX.
Позвольте мне начать с предоставления кода, который у меня уже есть для перезаписи URL:
location ^/account/level/(?<level>[0-9]+) {
set $upstream https://api_backend;
set $internal_route "/api/level/:level";
proxy_pass $upstream$internal_route;
}
Это перезапишет https://example.com/account/level/5 в https://api_backend/api/level/5 - Это работает правильно.
Теперь давайте посмотрим на код для зеркалирования трафика:
location ^/account/level/(?<level>[0-9]+) {
set $internal_route "/api/level/:level";
set $upstream https://api_backend;
proxy_pass $upstream$internal_route;
mirror /mirror/level-endpoint;
mirror_request_body on;
}
location = /mirror/level-endpoint {
internal;
set $upstream https://mirror_backend;
set $internal_route "/api/level/:level";
proxy_pass $upstream;
}
Это правильно отражает трафик в mirror_backend.Однако я не могу найти способ отправки трафика на $internal_route
.(даже когда я добавляю $internal_route
к директиве proxy_pass
.
Я смог использовать $request_uri
, однако это дает мне /account/level/5
(из примера выше).
Итак, возможно ли это, если да, может кто-нибудь объяснить, как?