我正在构建一个多站点应用程序,其中客户端必须能够使用他自己的域(与仅子域相反)。我想知道实现它的不同方法,以及当/如果客户希望在外部处理电子邮件托管时两端需要什么配置。
对 lxadmin/hypervm 的任何引用也会有所帮助。tx~
编辑: 我正在运行 apache;没有ssl要求。
我建议在 apacheconf
目录中创建一个子目录。类似的东西conf/user-domains
。该目录中的每个文件都将像用户的域一样命名,例如userdomain.com
,并且将包含该子域的 apache 指令。像(在我的脑海中):
<VirtualHost *:80>
ServerName userdomain.com
DocumentRoot "/path/to/userdomain.com/htmldocs/"
</VirtualHost>
假设您有一些 Web 界面供用户创建这些域,它会将包含他的设置的文件存储在某个已知位置,例如$webtmp/userrequests/request-XXXYYZ
. 然后,您将拥有一个 cron 作业,该作业将扫描该位置以查找新请求,并在conf/user-domains
.
哦,帮我个忙,不要只是将用户的输入复制到配置文件中——这是让你的服务器被劫持的好方法。首先检查它,如果它是合法的,则将其清除。(我进一步建议您授予 user 的只写访问权限conf/user-domains
,fakedaemonuser
并以该用户身份运行 cron-job。)
编辑:忘了告诉你,你需要在 apache 的主配置文件中添加一个指令(http.conf
通常):
Include conf/user-domains/*.conf
当然,这是假设您创建的所有文件都conf/user-domain/
以.conf
.
这类似于 wordpress.com 中博客的工作方式。xyz.wordpress.com 可以映射到 www.xyz.com。
Wordpress MU 具有相同的功能,并且有插件可以做到这一点。这个链接会给你一些想法。
基本上我认为,当客户请求将他的域映射到他的站点(在子域中)时,我们会添加一个插件域并将名称服务器的详细信息提供给用户。一旦它们被设置,重定向应该可以工作。如果我找到更多有用的链接,我会添加更多。