【问题标题】:Apache should not match domains without subdomainApache 不应该匹配没有子域的域
【发布时间】:2015-08-08 03:07:33
【问题描述】:

我不是一个特别好的管理员,而是一个程序员。不过我现在需要配置这个 apache 网络服务器。

我有一个域 abc.sub.domain.com 和一个与该域匹配的 VHOST。但是 VHOST 也匹配 sub.domain.com,这应该只是指向 Apache 的默认页面,而不是在我的应用程序目录中。

这是我的会议

<VirtualHost *:80>
    ServerName abc.sub.domain.com
</VirtualHost>

Include /path/to/local/config/httpd-vufind.conf

(开源)应用程序在环境变量上构建其整个配置,这就是我需要包含此 conf 文件的原因。无论域如何,该文件似乎总是包含在内。

现在,我想在域完全匹配时禁用此包含。

然后,我想设置一个仅匹配 sub.domain.com 的默认 VHOST。在这个域上 phpMyadmin 和类似的工具应该可以工作。

这是我的默认 VHOST 的样子。在sites-anebled it's called000-default` 下,位于第一个位置。

<VirtualHost *:80>
    ServerAdmin my@email.com
    ServerName sub.domain.com   
    DocumentRoot /var/www
    <Directory /var/www>
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

但这无助于解决我的问题。 sub.domain.com 仍然被路由到第一个 VHOST 配置中(带有 include 语句)。如果域匹配,我如何才能包含 only

【问题讨论】:

    标签: apache vhosts


    【解决方案1】:

    默认情况下,apache 匹配任何不匹配的ServerName 的第一个 VirtualHost。添加另一个虚拟主机部分上面你的,它会捕获任何不匹配的主机。其他具有指定名称的 VirtualHosts 进一步添加。

    【讨论】:

    • 如何在上面添加它们?我使用 a2ensite 来启用虚拟主机。而且我已经尝试使用添加为 000-default 作为列表中的第一个条目的默认虚拟主机。这没有帮助。
    • 我已经添加了我的默认 VHOST 配置,但这并不能解决问题。
    • 尝试了解加载虚拟主机和配置文件的顺序。首先,apache 加载主httpd.conf。如果定义了一些虚拟主机,则其中第一个成为默认值,并匹配对不存在域的任何请求。然后 apache 为每个包含的文件重复此迭代,以便它们在 httpd.conf 中遵循,依此类推。
    • 我的 Debian 系统上没有 httpd.conf。当我取消注释 include 时,一切正常(目标软件除外)。 include 似乎已执行,但其 ServerName 不匹配。可能是因为它不在&lt;VirtualHost&gt; 语句中。
    • 非常感谢。在 apache2.conf 中包含 VHOST 配置(在包含 vhosts 目录之前)有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2019-11-12
    • 2019-11-11
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多