Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Proxy based on parameter in the URL

Tags:

proxy

apache

I want to use the Apache HTTPd as a proxy server:

If a user requests http://xxx?st=yyy the chosen backend server should be server1. If a user requests http://xxx (no st parameter) then the backend server should be server2.

I want to know how I need to configure Apache to achieve this.

like image 840
L.J.W Avatar asked Oct 09 '22 03:10

L.J.W


1 Answers

Have a look at http://httpd.apache.org/docs/current/mod/mod_rewrite.html and the examples; specifically you are helped by the fact that:

  • REQUEST_URI The path component of the requested URI, such as "/index.html". This notably excludes the query string which is available as as its own variable named QUERY_STRING.

Which then lets you do things like

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

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

and so on. If it is the entire server - remove /foo/ and the / before $1 - if it is server specific - put an extra RewriteCond in front of it to limit to a specific host and so on.

like image 123
Dirk-Willem van Gulik Avatar answered Oct 13 '22 12:10

Dirk-Willem van Gulik