在同一台服务器上运行多个域

时间:2016-01-09 14:35:27

标签: apache ubuntu web

我有一台运行Apache的Ubuntu服务器,在/var/www/website/abc/var/www/website/xyz/var/www/website/lmn下有3个网站。我有3个域(www.abc.comwww.xyz.comwww.lmn.com)映射到同一台机器(将相同的ip映射到godaddy上的3个不同域)。

所以我搜索了一下,发现了这个链接 - virtual host setup,并在abc.com.conf中提出了/etc/apache2/sites-available/,并相应地提供了其他网站。启用了网站,然后重新启动了apache,但所有3个域上都显示了相同的网站(/var/www/website/abc)。我重新检查了路径,但它们似乎是正确的。我无法弄清楚出了什么问题。如何将它们路由到相应的站点?

1 个答案:

答案 0 :(得分:1)

如果您共享代码(在本例中为apache配置文件)以确定错误,将来会有所帮助。在任何情况下,这大致是文件的外观(他们不必看起来像这样,还有其他方法可以配置)。

  1. 首先检查/etc/apache2/apache2.conf并确保看到以下代码:

    IncludeOptional sites-enabled/*.conf
    
  2. apache2.conf文件是主配置文件。上面的那一行包括启用站点的文件夹中的所有配置文件。如果您使用Red Hat派生的操作系统,您会注意到配置文件结构不同(像Ubuntu这样的Debian衍生品喜欢将所有内容拆分成大量的配置文件,Red Hat衍生产品将它们整合在一起)

    1. 确保启用网站的文件夹中的每个文件都包含如下所示的行。
    2. 对于abc.com.conf:

      <VirtualHost *:80>
          ServerName www.abc.com
          DocumentRoot /var/www/website/abc
      </VirtualHost>
      

      如果你也想要&#34; abc.com&#34;指向这个虚拟主机进入&#34; ServerAlias abc.com&#34;在ServerName行下面。你在这里做的是为端口80(:80)上的任何ip地址(*)创建一个VirtualHost块。如果要确保VirtualHost仅与特定ip匹配,则可以使用外部 IP地址替换打开的VirtualHost行中的*(如果有多个外部ips,则可能只需要这样做)指向你的网络服务器)。只要Host HTTP标头是www.abc.com,ServerName行就会告诉apache匹配此VirtualHost。 ServerAlias可用于指定要匹配的其他主机。请记住,www.abc.com和abc.com被视为不同的主机。 DocumentRoot行设置从中提供文件的目录。

      同样适用于xyz.com.conf:

      <VirtualHost *:80>
          ServerName www.xyz.com
          DocumentRoot /var/www/website/xyz
      </VirtualHost>
      

      如果你也想要&#34; xyz.com&#34;指向这个虚拟主机进入&#34; ServerAlias xyz.com&#34;在ServerName行下面。

      最后是lmn.com.conf:

      <VirtualHost *:80>
          ServerName www.lmn.com
          DocumentRoot /var/www/website/lmn
      </VirtualHost>
      

      如果你也想要&#34; lmn.com&#34;指向这个虚拟主机进入&#34; ServerAlias lmn.com&#34;在ServerName行下面。