【问题标题】:setting a default apache virtual host设置默认的 apache 虚拟主机
【发布时间】:2009-12-07 07:45:51
【问题描述】:

除了选择它找到的第一个配置之外,还有什么更好的方法来设置默认的 apache 虚拟主机?

我有一个包含许多域的服务器,其中只有一些域配置了 httpd,但默认的虚拟主机被切断是 aaa.com,而我真的希望它默认为 mmm.com 吗?

类似于停放域,而无需为每个域设置配置的麻烦 - 然后我可以提供“尚未创建此域的内容”页面?

干杯

【问题讨论】:

  • 我正在尝试更改默认的 ssl 虚拟主机。 /etc/httpd/conf.d/e.conf 覆盖 ssl.conf,这是有道理的,因为它是按字母顺序处理的。没有意义的是,在首先处理 ssl.conf 之前,我如何才能像在安装letsencryp之前一样先处理 SSL.conf

标签: apache


【解决方案1】:

您可以创建一个默认虚拟主机并将其命名为000-default,以便它首先加载并使用,除非找到与请求的域匹配的另一个虚拟主机。这是基本的000-default

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory /var/www >
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

然后你可以在/var/www下设置一个PHP文件来创建一个域名停放页面(这是一个非常简化的例子):

<?php

printf('The domain <b>%s</b> is being parked', 
    htmlentities($_SERVER['HTTP_HOST']));

?>

【讨论】:

  • 名称000-default 存在一些问题:错误:站点默认值不存在!更改为default 使其运行顺利。谢谢!
  • 我正在尝试更改默认的 ssl 虚拟主机。 /etc/httpd/conf.d/e.conf 覆盖 ssl.conf,这是有道理的,因为它是按字母顺序处理的。没有意义的是,在首先处理 ssl.conf 之前,如何像在安装letsencrypt 之前一样先处理 SSL.conf
【解决方案2】:

第一个 sites-available conf 文件是默认的(按字母顺序)。如果没有创建它,应该已经有一个 000-default.conf 文件。

根据自己的喜好编辑这个,然后确保它已启用a2ensite 000-default.conf。并且 apache2 被重新加载 sudo service apache2 reload

那么任何没有被其他虚拟主机捕获的请求都会来到这里。

【讨论】:

  • 使用 a2ensite 000-default.conf 命令启用非常重要。除非您实际运行它并运行 sudo service apache2 reload,否则它不起作用。感谢您的回答。
【解决方案3】:

在基于名称的 VirtualHost 中使用 ServerAlias,您只需为每个新域添加一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 2016-04-29
    • 2021-12-02
    • 2023-04-10
    • 2017-05-30
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多