在具有多个虚拟主机文件的Apache2上指定默认虚拟主机

我已经build立了一个带有Moonshine(一个Ruby on Rails部署插件/脚本)的Ubuntu Linux VPS,并且托pipe了多个站点(尽pipeMoonshine只针对一个站点/应用程序),到目前为止运行良好。

我在服务器上遇到的一个小问题是,无意中设置了错误的虚拟主机,或者没有find虚拟主机,浏览器会直接进入我设置的第一个虚拟主机网站。 哪一个关心我,因为我不希望一个站点在出现错误或问题时不小心与另一个站点关联; 如果有任何问题,我会“宁可”做的事情是直接到一些默认的地方(如/var/www/default/oops.html)。

我GOOGLE了主题和常见的答案是,顺序是在虚拟主机文件中的所有东西,除非我认为这是假设我有所有我的虚拟主机在一个文件。 相反,我的虚拟主机分别设置在apache(mydomain1.com,mydomain2.com等)和“a2ensite”的站点可用/启用文件夹中,那么我将如何去“sorting”这些呢? (其中一个文件是一个'默认'文件,但似乎没有做任何事情。)

我看到的另一件事是在httpd.conf中指定一个默认主机,除非我试图这么做,它将所有我的虚拟主机站点完全redirect到默认主机。

在Ubuntu上,您的虚拟主机将通过Include语句加载到/etc/apache2/apache2.confconfiguration文件中。 你说得对,如果它不能匹配请求,而是因为VirtualHost指令不在同一个文件中,Apache将把它视为默认的第一个VirtualHost并不能阻止你对它们进行sorting。

/etc/apache2/apache2.conf的底部可以find这行:

# Include the virtual host configurations:
Include sites-enabled/

这就是Apache正在拾取/ etc / apache2 / sites-enabled /中指定的VirtualHosts的地方,所以你有两个select:

把一个include添加到apache2.cnfconfiguration文件中上面的Include行上面的一个新的VirtualHost。

或者在sites-enabled的文件sorting。 我不确定Apache用来读取这些文件的确切机制,但是我认为它是按字母顺序排列的(用同样的方法ls会列出一个目录)。 这在Ubuntu上被默认包含的默认网站被称为000-default 。 因此,为了创build一个新的默认的VirtualHost,你需要在sites-available (例如) 00_default_vhost.conf创build一个新的VirtualHostconfiguration,然后用a2ensite启用它。