我试图在同一个Ubuntu服务器上使用Apache来托管两个网站.我有一个IP地址,我只有一个域(解析为IP地址).所以我希望域名请求给一个网站,并请求ip地址给另一个.
我在/ etc/apache2/sites-enabled中有符号链接到两个文件,指向我的两个站点的配置.
一个包含:
<VirtualHost 1.2.3.4:80>
ServerName 1.2.3.4
stuff
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
而另一个包含
<VirtualHost domain.net:80>
ServerName domain.net
stuff
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,当我启动Apache时,我收到以下消息:
[warn] VirtualHost 1.2.3.4:80 overlaps with VirtualHost domain.net:80, the first has precedence, perhaps you need a NameVirtualHost directive
Run Code Online (Sandbox Code Playgroud)
当我将浏览器指向domain.net或1.2.3.4时,我得到了我想要与ip地址相关联的网站.
如果我删除符号链接,然后将浏览器指向域名或IP地址,则会启用唯一启用的网站.(正如你所希望的那样.)
据我了解,启用站点的配置文件一次加载,包含IP地址的配置文件胜过包含域名的配置文件.警告建议查看NameVirtualHost指令,但我可以在线找到的所有帮助都是指有两个域名指向同一个IP地址的情况.
一如既往,非常感谢帮助或建议.
(对于它的价值,这些网站都是Rails应用程序,我正在使用Passenger进行部署,但我认为这不重要.)
Tom*_*kas 10
我是这样做的:
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>
Run Code Online (Sandbox Code Playgroud)
Apache为每个请求查找合适的虚拟主机.如果没有找到与之相匹配的ServerName那个,ServerAliases那么就需要第一个.ServerName在第一个中使用的内容并不重要,VirtualHost因为如果没有其他内容VirtualHosts匹配,它将始终被使用.