Apache httpd переписать URL-адрес на основе поиска строки запроса

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

Спасибо.


person Rookie    schedule 25.09.2019    source источник


Ответы (1)


Следующая ссылка помогла понять, как строку запроса можно передать в скрипт.

https://daryl.blog/2008/11/17/using-rewritemap-for-query-string-voodoo/

Решено. Спасибо.

person Rookie    schedule 27.09.2019