使用Apache的VPS上的多个域

时间:2010-08-16 16:41:32

标签: apache2 vps vhosts

我计划很快获得一个VPS并拥有两个我想要托管的网站。我使用主机文件为我的开发环境设置了本地vhosts设置以正确移植它。

我的问题很简单:当设置两个单独的域,指向一个VPS服务器时,Apache足够智能,就像在本地环境中一样,自动将对domain.com的任何请求过滤到正确的VHOST,就像它一样本地?我想确定一下:)

谢谢!

我要问的例子:

说Domain1.com和Domain2.com都在我的VPS上。

当有人请求www.Domain1.com时,apache会看到并将其传递给domain1.com vhost文件。 当有人请求www.Domain2.com时,apache会看到并将其传递给domain2.com vhost文件。

2 个答案:

答案 0 :(得分:10)

简单的回答是'是',Apache就是那么聪明。如果您习惯将本地vhost文件与hosts文件结合使用来模拟本地域,则可以在VPS上应用完全相同的技术。您使用hosts文件执行的部分实际上是创建一个本地名称服务器,除了Apache不知道区别。只需为每个命名的vhost设置ServerName指令,您应该发现它与本地工作方式相同。

答案 1 :(得分:10)

Hosting two domains using only one VPS?重新传播我的答案,因为它更具相关性。

作为完全初学者,我一直在尝试在一个Apache VPS上托管多个域。教程中有太多的信息让我感到困惑。

下面我为完整的初学者描述如何使用Ubuntu和Apache在一个VPS服务器上托管多个域。

重要!您需要使用root帐户执行大多数操作。

重要!如果您之前尝试对apache配置进行一些更改,请将其撤消。

创建VirtualHosts

在服务器上为您的域创建文件夹。 例如:

/home/apache/domain1

/home/apache/domain2

将index.html文件放在每个文件夹中,包含任何文字。

This is domain1
This is domain2

转到/etc/apache2/sites-available文件夹。

创建文件domain1.conf

sudo nano domain1.conf

<VirtualHost *:80>
DocumentRoot /home/apache/domain1
ServerName domain1.com
ServerAlias www.domain1.com
</VirtualHost>

创建文件domain2.conf

sudo nano domain2.conf

<VirtualHost *:80>
DocumentRoot /home/apache/domain2
ServerName domain2.com
ServerAlias www.domain2.com
</VirtualHost>

您可以使用相同的方式创建子域。

sudo nano blog.conf

<VirtualHost *:80>
DocumentRoot /home/apache/blog
ServerName blog.domain.com
ServerAlias www.blog.domain.com
</VirtualHost>

启用已创建的网站

sudo a2ensite domain1.conf
sudo a2ensite domain2.conf

重启apache

sudo service apache2 reload

将域重定向到服务器

只有将域名重定向到服务器IP时,创建的VirtualHost才会起作用。域名只是可以转换为IP号码的名称。

本地计算机

要在本地计算机上测试您的配置,您需要编辑主机文件。

sudo nano /etc/hosts

应该是这样的。

127.0.0.1       localhost domain1.com domain2.com

主机文件告诉您的计算机该域需要重定向到本地计算机。

重要!如果您在现有域的hosts文件中创建条目,例如

127.0.0.1       stackoverflow.com

您将无法访问此网站。

服务器

为了将域重定向到您的Web服务器,您需要为给定域创建或修改“A”型DNS记录到服务器的IP地址。您可以通过域名注册商提供的小组控制来执行此操作。

如果您不知道服务器的IP地址,请登录该服务器并输入命令行:

ifconfig