Apache httpd переписать URL на основе поиска строки запроса - PullRequest
0 голосов
/ 25 сентября 2019

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

Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2019

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

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

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

...