如何配置 Apache 以完全忽略未配置的主机名并提供配置的主机名?

如何配置 Apache 以完全忽略未配置的主机名并提供配置的主机名?

我正在运行 Apache 2.4.29。

如果我像这样设置 000-default.conf 并启用它:

<VirtualHost *:80>
    ServerName default
    Redirect 404 /
    ErrorDocument 404 "Domain not configured on this server!!!!!!!!!"
</VirtualHost>

然后,我的目录中的所有其他虚拟主机/etc/apache2/sites-available(我使用 a2ensite 启用的)也返回 404。一切都是 404。

如果我删除 000-default-conf,或者我将其 a2disite,那么来自任何域的任何请求都将被 Apache 接受,并且它将由我的其他 VirtualHost 块提供服务,该文件/etc/apache2/sites-available/sub.domain.com.conf位于如下所示的文件中

<VirtualHost :*80>
    ServerName sub.domain.com
    # Some other stuff
</VirtualHost>

对我的服务器 IP 发出的任何请求,无论请求标头中的 HostName 是什么,都将被处理并从该块获得回复。我希望对非 sub.domain.com 主机名发出的请求收到 404 响应。

怎么做?

答案1

这显然是 Docker 不遵循从 sites-enabled 到 sites-available 的符号链接的问题,因为这两个目录位于不同的卷上。我认为这就是问题所在。我将两个目录设置为指向同一个卷,现在似乎可以正常工作了。我很累,所以我不确定,但我认为这解决了问题。这里有一个想法,即对两个目录使用同一个卷:https://stackoverflow.com/questions/31881904/docker-follow-symlink-outside-context/56492815#56492815 好吧,显然在上面的链接中,他没有这样做,但这激励了我这样做

相关内容