Apache中具有不同后端端口的dynamic虚拟主机

我正在为应用程序创build一系列子域,每个子域都通过mod_proxy获取自己的后端服务器。

我想避免每次发生这种情况都要生成一个新的虚拟主机,而是依靠命名机制(子域是基于数字的)。

假设域名为promotion-4321.example.com ,后端服务器将在端口4321上侦听

我可以创build一个从主机名提取4321 (并捕获所有promotion-XXXX.example.com )的apacheconfiguration,并使用它来将请求引导到端口4321上的后端?

首先,您需要在虚拟主机中捕获对服务器的所有请求:

 <VirtualHost *:80 *:443> # [ Server Domain ] ServerName localhost ServerAlias * ... 

那么你需要创build一个规则来捕捉你需要的信息

 ... RewriteCond %{HTTP_HOST} promotion-(.*?)\.example\.com RewriteRule (.*) http://backend.example.com:%1$1 [P,QSA] ... 
  • %1将是由RewriteCond正则expression式捕获的variables
  • $1将是由RewriteRule正则expression式捕获的当前url请求

如果您不想使用重写规则,则可以使用ProxyRemoteMatch:

 ProxyRemoteMatch promotion-(.*?)\.example\.com http://backend.example.com:$1