代理基于URL中的参数

时间:2011-12-27 14:19:22

标签: apache proxy

我想将Apache HTTPd用作代理服务器:

如果用户请求http://xxx?st=yyy,则所选后端服务器应为server1。如果用户请求http://xxx(无参数),则后端服务器应为server2

我想知道如何配置Apache来实现这一目标。

1 个答案:

答案 0 :(得分:3)

查看http://httpd.apache.org/docs/current/mod/mod_rewrite.html和示例;特别是你得到以下事实的帮助:

  • REQUEST_URI 请求的URI的路径组件,例如“/index.html”。 特别排除了查询字符串,该字符串可用作名为QUERY_STRING的变量。

然后让你做

之类的事情
RewriteCond  %{QUERY_STRING}  ^$
RewriteRule ^/foo/(.*)$ http://server2/$1 [P,L]

RewriteRule ^/foo/(.*)$ http://server1/$1 [P,L]

等等。如果它是整个服务器 - 删除/ foo /和/ 1之前的/ - 如果它是特定于服务器的 - 在它前面放置一个额外的RewriteCond以限制特定主机等等。