特定名称服务器时自动托管内容

时间:2018-05-24 09:17:51

标签: subdomain virtualhost web-hosting nameservers

基本上,这可能是一个令人难以置信的通用和糟糕的问题。我事先为此道歉,希望你能看一眼,并提供一些解决方案/帮助。

我正在考虑开始一个新项目,我猜这个项目的功能类似于Shopify。用户将支付月费,然后获得自己的网站,其上有商店风格的东西。

我对制作此内容的大多数方面感到满意,但是,我不能完全确定如何做的一件事就是如果他们想要一个自定义域(我假设大多数客户会这样做)。根据我对Spotify和Tictail等服务的经验,为了做到这一点,我将不得不让他们将名字服务器更改为我的名字服务器。在那之后,我不完全确定它将如何运作以及如何设置它。这些网站的所有文件都将完全相同,所以我不需要做太多改变。

所以基本上我的主要问题是,当有人将其名称服务器设置为我的名字服务器时,如何将其开发为自动托管某些内容?如果可能的话,我希望它是完全自动的,但我不介意是否有一点手动输入。

如果问题措辞不当或者因为我从未开发过这样的问题而感到困惑,我会非常抱歉。正确方向的一个简单点将非常受欢迎,因为我不太清楚从哪里开始。

由于

1 个答案:

答案 0 :(得分:1)

这取决于您用来提供此类用户相关名称服务器的服务器技术。如果我理解你,你希望得到类似的东西:

# Your service runs here:
http://yourdomain.com

# For the user account (user specific application)
http://{unique_username}.yourdomain.com/

# Then you would have (for N users)
http://username0.yourdomain.com/
http://username1.yourdomain.com/
...
http://usernameN.yourdomain.com/

您必须避免dns劫持的方法是在服务器主机配置中实际指定名称服务器。有许多服务器围绕这些服务器提供虚拟主机配置,以允许在同一IP地址中有许多不同的域名。

例如,在nginx中,这可以使用虚拟主机完成。在您的情况下,您需要以编程方式创建它们。为此,必须将文件添加到文件夹/etc/nginx/sites-available。这可以是一个名为/etc/nginx/sites-available/username0的文件,其内容为:

server {
  listen 80 
  server_name username0.yourdomain.com;
  root /path/to/app/;
  ...
}

因此,对于您的解决方案,您将为每个客户用户创建一个文件。要激活新创建的虚拟主机(服务器块),请将其链接到包含路径的文件夹中:/etc/nginx/sites-enabled

ln -s /etc/nginx/sites-avaible/username1 /etc/nginx/sites-enabled/username1
sudo service nginx reload

阅读有关dns hijacking here的更多信息,并查看虚拟主机实现,如上面显示的nginx服务器块或apache虚拟主机。

祝你好运!