如何允许用户使用自己的域名访问他们的页面

如何允许用户使用自己的域名访问他们的页面

我打算使用 Django 1.5 建立一个相册网站。我想为我的会员提供的功能之一是使用他们自己的域名。

www.albumn123.com/用户/mike

www.mike.com

现在,网站几乎准备好了。但对于域名部分我还是一无所知。我认为我不可能只通过编码来完成它。我认为我必须在服务器中进行一些配置。这就是我在这里发布问题的原因。

请给我指出正确的方向,让我知道应该如何开始。如果可能的话,我想使整个过程自动化。

我的开发堆栈:

Unbuntu 12.04

Django 1.5

Gunicorn 是服务器。

答案1

通配符虚拟主机 + CNAME

这种方法有两个部分。由于我不是程序员,我将对服务器端进行评论。

Apache WildCard 虚拟主机

您可以通过将服务器名称或别名设置为“*”在 Apache 中配置通配符虚拟主机。

<VirtualHost 0.0.0.0:80>
ServerName domain.com
ServerAlias *
...
</VirtualHost>

这将使此虚拟主机成为所选 IP 地址上任何虚拟主机的默认主机。如果您在服务器上托管多个网站,我建议您将此虚拟主机放在其自己的 IP 上。

别名记录

对于自定义域名,您可以让您的客户输入 CNAME 以将其自定义域映射到您的域。

www.user.com CNAME www.albumn123.com

应用程序逻辑

然后,您的应用程序将需要获取环境变量或主机标头,然后提供正确的网站。此外,请务必处理不存在的域并规范化您的 URL(www.domain.com 与 domain.com),以使事情更易于管理。

是的,您可以使用 RewriteRules 来执行此操作,但根据我的经验,它扩展性不佳,而且如果您必须重新组织文件系统,则会很麻烦。

答案2

我对 Gunicorn 不是特别熟悉,但如果它的工作方式与 Apache(和其他几个服务器)类似,它应该接受指向它的所有域的请求。然后由您在代码中检测请求的域是什么并进行相应的处理。

例如,在 PHP 中,您可以使用$_SERVER['HTTP_HOST']来查找请求的域名,然后根据域名构建页面。您必须在某处进行映射,以将任意域名链接到您的用户。

相关内容