例如,我想设置一个转发代理,将HTTP请求转发到a.com,b.com,c.com到a.mirror.com,b.mirror.com,c.mirror.com。
目前我必须configuration3个虚拟主机:
host-a: ServerName a.com ProxyPass / http://a.mirror.com/ host-b: ServerName b.com ProxyPass / http://b.mirror.com/ host-c: ServerName c.com ProxyPass / http://c.mirror.com/
有没有办法重写http请求的域部分? 如:
ProxyPassMatch http://(.*).com/ http://$1.mirror.com/
我不知道是否必须通过RewriteRules来完成,但我不知道如何正确编写规则以及RewriteRule v ProxyPass的性能,但性能不是一个大问题。
根据你的确切设置的细节,这可以使用mod_rewrite来完成。 你可能会在HTTP_HOST上匹配,删除你想要的主机名的一部分,并将其粘贴到.mirror.com上,然后使用mod_rewrite的[P]标志来启用代理。
这不完全是你想要的,但它可能会让你更接近一点:
http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#uservhosts
你想要这样的东西:
RewriteCond %{HTTP_HOST} ^(.*)\.com RewriteRule (.*) %{SERVER_PROTOCOL}://%1.mirror.com$1 [P]
(未经testing)。