将域指向没有虚拟主机或自定义 conf 文件的 apache 服务器

Posted

技术标签:

【中文标题】将域指向没有虚拟主机或自定义 conf 文件的 apache 服务器【英文标题】:Pointing a domain to apache server without virtual hosts or custom conf files 【发布时间】:2017-08-11 07:27:15 【问题描述】:

我们有一个 SaaS 产品,我们为客户提供网站。客户可以请求将自己的域指向他们的网站。目前我们使用 httpd.conf 文件添加一个指向同一文档目录的 VirtualHost 条目。之后,数据库将通过匹配 URL 来加载网站。我们意识到这种方法存在一些问题,而且根本无法扩展。

如果 httpd.conf 文件中有错误,那么整个产品可能无法正常工作。这实际上已经发生了。此外,我们使用 WHM 和 cPanel,因此当我们在实时服务器中添加 mod 或进行调整时,整个 httpd.conf 会被重写,我们需要将现有的虚拟主机条目替换/添加到文件中。

奇怪的是,在我们的 QA 服务器中,我不必添加任何虚拟主机条目,只要指向新域,就会从数据库中获取该网站。我意识到只有在实时服务器中才需要虚拟主机条目。两者都安装了 Apache 2.4 CentOS。这背后有什么原因吗?我确定这与配置更改有关。

希望有人能指出正确的方向,我可以在我们的实时服务器环境中实现同样的目标。

干杯!

【问题讨论】:

【参考方案1】:

在 Apache VirtualHosts 中添加多功能性,但您不必创建任何功能。

Apache 将侦听您告诉它的接口(使用 Listen 指令),如果您尚未定义任何虚拟主机,则在接收请求时,默认服务器配置将响应所有请求。

在您添加虚拟主机的那一刻,它将用于回答所有请求,如果您添加更多虚拟主机,则会检查其中的服务器名称,以确定根据传入主机标头传递请求的位置。

真的没有更多的东西了。

【讨论】:

正确。默认服务器配置在哪里?如果请求与虚拟主机不匹配,默认配置会响应请求还是会发生什么? 如果你在启动服务器时没有指定任何默认配置(如httpd -k start -f /path/to/conf),则默认配置在编译时从默认值加载,通常称为httpd.conf或apache2.conf在某些发行版中。如果您添加虚拟主机并且其中没有名称与客户端请求的主机匹配,则将使用第一个虚拟主机。 我认为这与“# Default vhost for unbound IPs”条目有关。我可以更改此详细信息吗?

以上是关于将域指向没有虚拟主机或自定义 conf 文件的 apache 服务器的主要内容,如果未能解决你的问题,请参考以下文章

在 k3s 上自定义 coredns 以将域直接指向集群负载均衡器

服务层应该接受来自控制器的 DTO 或自定义请求对象吗?

apache_conf 将域重定向到子文件夹

将域指向端口8080上Jetty上运行的Web应用程序的基本配置

如何将域定向到它在 apache htaccess 中指向的服务器上的子文件夹

将域指向我的远程 Node JS 应用程序?