来自子域的apache proxypass

时间:2014-04-08 09:26:41

标签: regex apache mod-proxy proxypass

我想在apache2中从子域代理到这样的其他端口

http://test1.example.com - > http://test1.example.com:6543

无论如何编写配置文件并不特定于此子域但是所有子域

无论如何

,例如http://.*.example.com - > HTTP://.*.example.com:6543

和http://.*.example.com/first/second - > HTTP://.*.example.com:6543 /第一/第二

这是我的配置

<VirtualHost *:80>
ServerName example.com
ProxyPassMatch ^([^.]+)\.example\.com(.*) http://$1.example.com:6543/$2
ProxyPassReverse /  http://example.com
</VirtualHost>

1 个答案:

答案 0 :(得分:2)

您需要mod_rewrite才能做到这一点。它可以使用[P]进行代理。使用如下(删除VirtualHost标签以满足语法高亮):

ServerName example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteRule ^(.*) http://%1.example.com:6543/$1 [P]

%1是子域名,在条件匹配时,$1是路径,与规则匹配。


您也可以在没有RewriteCond的情况下使用

执行此操作
RewriteRule ^(.*) http://%{HTTP_HOST}:6543/$1 [P]

我使用上面的额外步骤使其更具信息性,例如如果你想要use the subdomain in the path