Мне нужно переписать 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 внутренними серверами, которые я ищу.
Спасибо.