我正尝试在同一个Ubuntu服务器上使用Apache托管两个网站。我有一个ip地址,并且我只有一个域(解析为ip地址)。所以我想请求域名给一个网站,并请求ip地址给另一个。
我在/etc/apache2/ sites enabled中有指向两个文件的符号链接,指向我的两个站点的配置。
其中一个包含:
<VirtualHost 1.2.3.4:80>
ServerName 1.2.3.4
stuff
</VirtualHost>而另一个包含
<VirtualHost domain.net:80>
ServerName domain.net
stuff
</VirtualHost>但是,当我启动Apache时,我收到以下消息:
[warn] VirtualHost 1.2.3.4:80 overlaps with VirtualHost domain.net:80, the first has precedence, perhaps you need a NameVirtualHost directive当我将浏览器指向domain.net或1.2.3.4时,我会得到与ip地址相关联的站点。
如果我删除任何一个符号链接,然后将浏览器指向域名或ip地址,就会得到唯一启用的网站。(正如您所希望的那样。)
据我所知,启用站点的两个配置文件都是同时加载的,并且包含ip地址的配置文件胜过包含域名的配置文件。该警告建议查看NameVirtualHost指令,但我在网上找到的所有帮助都是指两个域名指向同一ip地址的情况。
一如既往,我们将非常感谢您的帮助或建议。
(无论如何,这两个网站都是Rails应用程序,我使用Passenger进行部署,但我认为这在这里并不重要。)
发布于 2010-02-10 04:16:20
我是这样做的:
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匹配的any,那么它将获取第一个any。在第一个VirtualHost中使用什么ServerName并不重要,因为如果其他VirtualHosts都不匹配,它将始终被使用。
发布于 2011-11-04 12:41:41
遇到这个问题,下面是我所做的:
编辑httpd.conf
sudo vi /etc/apache2/httpd.conf添加此行
NameVirtualHost *:80注意:您可以用your_ip_address:80替换*: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打开您的web浏览器并转到新域
http://domain.com发布于 2010-02-10 04:18:25
请确保您有说明
NameVirtualHost *:80在/etc/apache2/ports.conf中
https://stackoverflow.com/questions/2232205
复制相似问题