Я хочу создать серию поддоменов для приложения, каждый из поддоменов получит свой собственный сервер через mod_proxy.
Я бы хотел избежать генерации нового виртуального хоста каждый раз, когда это происходит, и вместо этого полагаться на схему именования (поддомены основаны на числовом выражении).
Итак, допустим, домен будет promotion-4321.example.com
и внутренний сервер будет прослушивать порт 4321
Могу ли я создать конфигурацию apache, которая извлекает 4321
от имени хоста (и ловит все promotion-XXXX.example.com
) и использует его для прямого запроса на серверную часть порта 4321
?
Прежде всего вам нужно перехватить все запросы к серверу на виртуальном хосте:
<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
будет текущим запросом URL, перехваченным регулярным выражением RewriteRuleЕсли вы не хотите использовать правило перезаписи, вы можете использовать ProxyRemoteMatch:
ProxyRemoteMatch promotion-(.*?)\.example\.com http://backend.example.com:$1