我正在为应用程序创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