将域名指向没有虚拟主机或自定义配置文件的Apache服务器

问题描述:

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

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

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

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

干杯!

在Apache VirtualHosts中增加了多功能性,但是您不必强制创建任何。

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

当您添加虚拟主机时,将用于回答所有请求,并且如果您添加更多虚拟主机,则会检查其中的服务器名称,以确定根据传入主机标头确定何处传送请求。

真的没有更多的东西真的。

+0

正确。默认服务器配置位于何处?如果请求与虚拟主机不匹配,默认配置是否回答请求或发生了什么? –

+0

如果你在启动服务器时没有指定任何东西(如'httpd -k start -f/path/to/conf'),那么默认配置在编译时从默认值加载,通常称为httpd.conf或者在某些发行版中使用apache2.conf。如果添加虚拟主机并且其中没有名称与客户端请求的主机相匹配,则将使用第一个虚拟主机。 –

+0

我认为这与“ #未绑定IP的默认虚拟主机”条目有关。我可以改变这个细节吗? –