apache proxypass с поддомена

Я хочу прокси-пасс в apache2 из поддомена в другие порты, подобные этому

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

Есть ли способ написать конфигурационный файл не только для этого субдомена, но и для всего субдомена?

в любом случае, как http://.*.example.com -> http://.*.example.com:6543

и http://.*.example.com/first/second -> http://.*.example.com:6543/first/second

Вот мой конфиг, который

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

person firstkungz    schedule 08.04.2014    source источник


Ответы (1)


Для этого вам понадобится 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]

Я использовал дополнительный шаг выше, чтобы сделать его более информативным, например. в случае, если вы хотите использовать субдомен в пути.

person Adam Katz    schedule 29.04.2014