httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sai A <arialwi...@gmail.com>
Subject [users@httpd] mass proxying via mod_rewrite
Date Mon, 08 Nov 2010 17:44:54 GMT
Hi Apache users/experts,

I am trying to achieve proxying using mod_rewrite. I am trying to do the
following mappings:
Let www.company.com/foo/bar remain as such
Let all special subdomains.company.com/foo/bar remain as such
Proxy www.client1.com/admin to http://admin.company.com/client1name
Proxy www.client1.com to http://clients.company.com/client1name

admin.company.com and clients.company.com are externally accessible on the
internet and for anyone accessing them using those URLs should still work
(backward compatible). This is the httpd.conf file that I have written.

1) Is this approach right? Would the following also achieve the
functionality achieved by ProxyPassReverse of mod_proxy?

# LoadModule directives for mod_rewrite, mod_proxy and mod_proxy_http

RewriteEngine on
UseCanonicalName off

RewriteMap    lowercase    int:tolower
RewriteMap    clients      txt:/path/to/vhost.map

# If it is the main company site, then no looking up required.
RewriteCond %{HTTP_HOST}   ^(www)?\.company\.com [NC]
RewriteRule ^/(.*)         http://www.company.com/$1 [L]

# Don't map any of the special company subdomains
RewriteCond %{HTTP_HOST}   ^special\.company\.com [NC]
RewriteRule ^/(.*)         http://special.company.com/$1 [L]
# Do the above for other subdomains that should not be touched

# Rules for mapping client admin sites of the form
# www.client1.com/admin/xyz to http://admin.company.com/clientname/xyz

RewriteCond   %{HTTP_HOST}    !^$
RewriteCond   %{REQUEST_URI}  ^/admin/.*
RewriteCond   ${lowercase:%{HTTP_HOST}}  ^(.+)$
RewriteCond   ${clients:%1}  ^(.+)$
RewriteRule   ^/admin/(.*)$    http://admin.company.com/%1/$1 [P,L]

# Rules for mapping client sites of the form
# www.client1.com/foo to http://clients.company.com/clientname/foo

RewriteCond   %{HTTP_HOST}  !^$
RewriteCond   ${lowercase:%{HTTP_HOST}}  ^(.+)$
RewriteCond   ${clients:%1}  ^(.+)$
RewriteRule   ^/(.*)$    http://clients.company.com/%1/$1 [P,L]

# Rules so that older client URLs work
This is an auxiliary question: 2) How can I do this?

My vhost.map file is as follows:

www.client1.com client1name
www.client2.com client2name
# ...
www.clientN.com clientNname

Please let me know if this approach would work... if there are some caveats,
I'd like to know them as well.

Thanks in advance,
Sai

Mime
View raw message