mass proxying via mod_rewrite

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux