0

我需要使用 (queryparam servername) 的文本映射重写 URL,以根据查询参数将请求定向到不同的后端服务器。

我已经尝试使用 prg: 类型和 perl 脚本的 RewriteMap、RewriteRule。但是查询字符串在查找脚本中不可见。

例如地图文件

    QS1 服务器1
    QS2 服务器1
    QS3 服务器3
    QS4 服务器4
    等等..(大约 10K 条目 -= 映射到大约 20 个后端服务器)

如果输入 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

我目前的试验似乎没有帮助。

    重写引擎开启
    RewriteMap 分发请求“prg:/export/requestdistributor.pl”
    重写规则 ^(.*)$ ${distributeRequests:$1?%{QUERY_STRING}} [P]

我根据 URL 中的参数查找了Proxy 但这对于一组有限的查找条目很有用;不适用于映射到我正在寻找的 10 个后端服务器的 10K 查询参数。

谢谢。

4

1 回答 1

0

以下链接有助于将查询字符串传递到脚本中。

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

解决了。谢谢。

于 2019-09-27T12:52:26.480 回答