【问题标题】:Why is Apache redirecting all domains without a .conf file to one particular domain?为什么 Apache 将所有没有 .conf 文件的域重定向到一个特定域?
【发布时间】:2016-07-28 08:36:04
【问题描述】:

我的公司有一台 LAMP 服务器,我不是网络托管专家,但我管理基本任务。

我的服务器目前托管大约十二个不同的域。每个域在sites-enabled 目录中都有一个.conf 文件,它们工作正常。假设我们有 example1.com、example2.com 和 example3.com,希望能帮助解释这个问题。

最近,与我一起工作的人注册了一堆新域名。通过域名注册商,他们将域名指向我们的 IP 地址。我相信这被称为“停放”一个域。我还没有在我们的服务器上设置.conf 文件或启用任何这些新域。假设它们是 newsite1.com、newsite2.com 等...

让我感到困惑的是,如果将其中一个新域输入浏览器,我们现有的域之一就会显示出来。假设它是example1.com。因此,如果您转到浏览器并输入 newsite1.com 或 newsite2.com,您将被带到 example1.com。另外,在浏览器顶部的地址栏中,会显示为example1.com。

这不是我们想要的行为。一方面,据我所知,我们没有选择 example1.com 作为默认网站,也不一定是我们希望成为默认网站的网站。无论如何,我不知道为什么系统会转到 example1.com 而不是 example2.com 或我们的任何其他网站。

期望的行为是出现一般错误,“此域不存在”或类似的东西。如果必须有一个默认网站,我们希望能够选择它。

我在 Stack Oveflow 上看到过类似的问题,但他们都认为需要设置一个默认值。当我查看它们引用的配置文件时,例如/etc/httpd/conf/httpd.conf,它们是空的,所以在我的例子中,没有什么可以un设置。

如何阻止浏览器被重定向到它们当前被定向到的网站?如何设置它以便 Apache 只返回“未找到站点”错误而不是提供网站?

【问题讨论】:

  • 对不起,如果我的原始答案伤害了任何敏感性,但这根本不是我的意图。由于您明确表示您已经知道如何添加默认主机但不喜欢这样的解决方案,我只想强调 解决方案。

标签: apache redirect


【解决方案1】:

解决此问题的最简单方法是以数字开头的 .conf 文件命名。

如果您查看默认的 apache 配置,您会注意到一个名为“000-default.conf”的文件。 Apache 将按数字顺序加载文件 - 所以只需将您的默认虚拟主机 .conf 文件设为 000-whatever.conf。

【讨论】:

  • 000-default.conf(以及 sites-enabled 目录)不是官方 Apache 发行版的一部分,而是由基于 Debian 的 Linux 发行版定制的,这毫无价值——以防有人想知道他为什么在他的电脑里找不到 :)
  • 我的意思是“值得注意”,抱歉。我猜一个有弗洛伊德错别字的倾向 xD
【解决方案2】:

我想您正在使用基于名称的虚拟主机和 <VirtualHost> 指令,这就是 docs 必须说的:

如果未找到匹配的基于名称的虚拟主机,则将使用与 IP 地址匹配的第一个列出的虚拟主机。因此,给定 IP 地址和端口组合的第一个列出的虚拟主机是该 IP 和端口组合的默认虚拟主机。

所以当你说:

我在 Stack Oveflow 上看到过类似的问题,但都是 假设一个人想要设置一个默认值。

...我能补充的是,这就是 Apache 的工作方式。我不认为有一个默认主机服务于 此域不存在 页面本身就是错误的。我总是在我的 Windows 开发框中这样做,通常通过注释掉 conf/extra/httpd-vhosts.conf 文件中的默认主机并在那里添加我的默认主机。

如果您征求我的意见,Apache 基本上在没有匹配的情况下服务于任意站点是相当值得怀疑的,因此这种定制是强制性的——我见过很多不这样做的实时站点。

【讨论】:

  • 当没有匹配的主机/虚拟主机时,Apache 不会为随机站点提供服务 - 它为其第一个配置的站点提供服务。这是易于控制的可预测的可重复行为。
  • @AlanHorrocks 谢谢,我已经修正了术语以使其不那么含糊。如果您阅读了答案,您会发现这正是我所说的,即使带有 Apache 手册的链接和引用。我说的是“随机”思考这些年来新网站是如何进入服务器的。
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多