场景:
我有一个网站 – www.mydomain.com。 注册用户可以select在mydomain.com上将自己的帐户作为子域名(如username.mydomain.com),或者他们可以select拥有自己的域名(如www.userdomain.com)。 因此,用户可以通过子域URL或自己的主机名访问他/她的帐户,请求应该被转发到mydomain.com上的特定url。
例如: xyz.mydomain.com或www.xyz.com应该从www.mydomain.com/webapp/account?id=xyz提供用户帐户。 用户应该完全不知道内容来自哪里。
build立:
我的网站在tomcat 5.5.28中以apache作为web服务器运行。 我正在使用VPS,这意味着我可以控制所有的configuration文件(apache,tomcat和dns服务器)。
你能告诉我什么是实现上述情况所需的configuration?
考虑到web服务器configuration,“站点”是一个糟糕的抽象概念。 你的networking服务器正在处理'请求'。
这些请求包含“主机名”和“url”属性。 您可以使用代理来转换任何请求属性,并在apache中重写规则,但是您还需要您的应用程序知道如何处理转换后的参数。
如果你完全控制这个应用程序 – 检查“主机名”请求标题并将其用作源数据可能更容易。
没有足够的信息。 取决于你的应用程序和它的架构。
一个build议
你可以使用代理传递或ajp的Apache前端?
为每个域创build一个虚拟主机,每个域都有不同的DocumentRoot,所以像图像和皮肤这样的东西可以保持每个域独立,不同的日志,如果你想等。
我认为configuration会是这样的,但是我从内存这样做,目前没有设备testing,所以使用下面的configurationbuild议作为一个粗略的想法 – 这不是一个工作的实现。
你可以用proxy_ajp代替通过proxy_ajp传递的代理 – 实际上我认为proxy_ajp会是一个更好的解决scheme,但是我的记忆并没有延伸到那么远。
<VirtualHost *:443> ServerName www.userdoman.com ServerAlias userdomain.com DocumentRoot /var/www/userdomain.com/html ErrorLog /var/www/userdomain.com/logs/error_log LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog /var/www/userdomain.com/logs/access_log ProxyPass /yourwebapp https://www.mydomain.com/yourwebapp ProxyPassReverse /yourwebapp https://www.mydomain.com/yourwebapp </virtualHost>