我正在尝试使用来自同一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进行部署,但我认为这不重要。)
答案 0 :(得分:9)
我就是这样做的:
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
的任何一个,则它会占用第一个。ServerName
。您在第一个VirtualHost
中使用VirtualHosts
的内容并不重要,因为如果其他{{1}}都不匹配,它将始终使用。
答案 1 :(得分:4)
如果有这个问题,我就是这样做的:
编辑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
答案 2 :(得分:0)
确保您有说明
NameVirtualHost *:80
/etc/apache2/ports.conf中的