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]