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

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

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

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

假设域名promotion-4321.example.com和后端服务器将监听端口4321

4321我可以创建从主机名中提取(并捕获所有内容promotion-XXXX.example.com)并使用它将请求定向到端口上的后端的apache 配置4321吗?

答案1

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

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

然后你需要创建一个规则来捕获你需要的信息

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

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

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

相关内容