Мне нужно переписать URL-адрес, чтобы направить запрос на разные внутренние серверы на основе параметра запроса, используя текстовую карту (queryparam имя_сервера).
Я пробовал RewriteMap, RewriteRule с типом prg: и Perl-скриптом. Но строка запроса не видна в сценарии поиска.
например файл карты
QS1 Server1 QS2 Server1 QS3 Server3 QS4 Server4 etc.. (about 10K entries -= mapping to about 20 backend servers)
Если входной URL-адрес http://myrouter.com:8080/a/b/c?query=QS2
затем его следует переписать и отправить на http://Server1:9988/a/b/c?query=QS2 (да со строкой запроса)
http://myrouter.com:8080/a/b/c?query=QS4 отправлено на http://Server4:9988/a/b/c?query=QS4
Мои текущие испытания, кажется, не помогают.
RewriteEngine on RewriteMap distributeRequests "prg:/export/requestdistributor.pl" RewriteRule ^(.*)$ ${distributeRequests:$1?%{QUERY_STRING}} [P]
Я посмотрел Прокси на основе параметра в URL Но это хорошо для ограниченного набора записей поиска; не для сопоставления параметров запроса 10K с 10 внутренними серверами, которые я ищу.
Спасибо.