Я знаю, что это старый вопрос, но я действительно придумал ответ, который работает для Tomcat , недавно:
Во-первых, вам нужен Tomcat за Apache.
Во-вторых, вам нужно создать определение веб-сайта, например:
<VirtualHost *:80>
ProxyRequests On
ProxyVia On
<Proxy http://example.com> #FIXDOMAIN
Order deny,allow
Allow from all
</Proxy>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC] #FIXDOMAIN
RewriteRule ^(.*)$ http://example.com$1?proxy_domain=%{HTTP_HOST} [P,QSA] #FIXDOMAIN
JkMount /* default
ServerName example.com #FIXDOMAIN
ServerAlias *.example.com #FIXDOMAIN
<!-- Other normal options go here -->
</VirtualHost>
В-третьих, вам нужно настроить виртуальный домен в Tomcat на example.com
.
<Host name="example.com" appBase="webapps-example"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>www.example.com</Alias>
</Host>
Это создаст подстановочный домен, который может обрабатывать Apache. Правила mod_rewrite
переписывают URL-адрес на один URL-адрес, который понимает Tomcat. Затем через mod_proxy
домен субдомена проксируется к базовому домену вместе с параметром GET
, называемым proxy_domain
(который привязан поверх существующих параметров GET), чтобы определить, каким было исходное имя пользователя.
Это довольно сложное (и, вероятно, не очень масштабируемое решение) из-за того, что Apache Tomcat не поддерживает домены подстановочных знаков. Но это работает!