English 中文(简体)
以单一域名和单一IP地址为两个网站提供服务
原标题:Serving two websites with Apache with single domain name and single IP address
  • 时间:2010-02-09 20:11:50
  •  标签:
  • apache

我正在尝试使用同一台Ubuntu服务器上的Apache托管两个网站。我只有一个IP地址和一个域名(解析为该IP地址)。因此,我希望将域名请求分配给一个网站,IP地址请求分配给另一个网站。

我在可浏览两份文件的电离层/电离层/站/站/站/场上有短距离,为我的两个地点打上了座。

一个包含:

<VirtualHost 1.2.3.4:80>
    ServerName 1.2.3.4
    stuff
</VirtualHost>

另一则载有

<VirtualHost domain.net:80>
    ServerName domain.net
    stuff
</VirtualHost>

然而,当我开始阿帕奇时,我收到以下信息:

[warn] VirtualHost 1.2.3.4:80 overlaps with VirtualHost domain.net:80, the first has precedence, perhaps you need a NameVirtualHost directive

当我把我的浏览器放在任何领域:net或1.2.3.4时,我拿到我希望与普面地址相关的网站。

如果我删除其中任何一个符号链接,则将浏览器指向域名或IP地址,只会显示唯一启用的网站(正如你所希望的那样)。

据我理解,sites-enabled中的两个配置文件同时被加载,包含IP地址的配置文件胜过包含域名的配置文件。警告建议查看NameVirtualHost指令,但我在网上找到的所有帮助都是针对两个域名指向同一个IP地址的情况。

一如既往,任何帮助或建议都将不胜感激。

就这个问题而言,这两个网站都是Rails应用程序,并且我使用Passenger进行部署,但我不认为这很重要。

最佳回答

这是我做的方法:

NameVirtualHost 1.2.3.4:80

<VirtualHost 1.2.3.4:80>
    ServerName localhost
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.net
    DocumentRoot /var/www/mydomain
</VirtualHost>

Apache为每个请求寻找一个适合的虚拟主机。如果它没有找到匹配ServerName或任何ServerAliases的主机,那么它就会取第一个。在第一个VirtualHost中使用什么ServerName并不重要,因为如果没有其他VirtualHosts匹配,它总是会被使用。

问题回答

有这个问题,以下是我所做的:

编辑httpd.conf

sudo vi /etc/apache2/httpd.conf

添加这一行

NameVirtualHost *:80

注意:您可以将*:80替换为your_ip_address:80

现在创建域名配置文件。我使用domain_name.com。

sudo vi /etc/apache2/sites-available/domain.com

添加到文件中。

<VirtualHost *:80>
     ServerAdmin admin@domain.com
     ServerName www.domain.com
     ServerAlias domain.com
     DocumentRoot /var/www/domain.com/public_html/
     ErrorLog /var/www/domain.com/logs/error.log
     CustomLog /var/www/domain.com/logs/access.log combined
</VirtualHost>

请确保 domain.com 配置中的目录存在。

/var/www/domain.com/public_html/
/var/www/domain.com/logs

注意:如有需要,请使用mkdir命令。

sudo mkdir /var/www/domain.com/public_html/
sudo mkdir /var/www/domain.com/logs

现在我们需要像这样启用新的配置文件

sudo a2ensite domain.com

你应该看到一个要求重新启动Apache的通知,请使用此命令。

/etc/init.d/apache2 restart

现在我们需要一个测试文件来查看

sudo vi /var/www/domain.com/public_html/index.html

添加一些文本

Hello domain.com

打开您的网络浏览器,进入您的新域名。

http://domain.com

确保你有指示。

NameVirtualHost *:80

在/etc/apache2/ports.conf中。





相关问题
Using SimplePie with CodeIgniter and XAMPP

I am using CodeIgniter 1.7.2 with XAMPP 1.7.2 on a Windows computer. I am trying to make use of SimplePie. I followed all the instructions I could find: a copy of simplepie.inc is in my applications/...

Multiple Sites with common files

I have developed over 50 sites that all use the exact same files other than CSS and IMAGES, I currently duplicate the files each time I create a new site and upload different css and images. What ...

http server validation

I finish a litle http server, writing from scratch. I would like to be sure that my imlementation is conforme to the HTTP specifications. W3C give us tools for HTML/XML conformance, but i see nothing ...

热门标签