【问题标题】:Handle multiple domains without restarting HTTP server处理多个域而无需重新启动 HTTP 服务器
【发布时间】:2020-05-02 16:02:14
【问题描述】:

假设我有多个域指向一台服务器。 例如,我知道我可以在 Apache 中拥有多个虚拟主机,但是每次我想添加一个新网站时,我都必须更改配置并重新启动服务器。

我正在寻找托管多个域名而不必每次都创建配置文件。 为什么 ?因为在创建配置文件后,我必须重新启动 HTTP 服务器,这意味着我添加的每个域都会在一段时间内阻止所有其他域。

基本上,我想要一个配置或程序,将每个域动态指向我的主要源代码的子文件夹,而无需创建配置文件或重新启动 HTTP 服务器。

请让我知道这对于当前的 HTTP 服务器是否可行,或者如果不能向我指出一些可以帮助我以编程方式执行此操作的资源。

【问题讨论】:

  • 如果您有高可用性需求,您可能需要一个单独的负载均衡器和一个网络服务器集群。特别是如果您无法忍受这么短的服务中断时间。
  • @OlafKock,谢谢你的回答,你能指出一些使用这种架构的资源吗?

标签: apache nginx dns


【解决方案1】:

对于大多数标准 Web 服务器,您根本无法在不重新启动或至少重新加载服务的情况下执行此操作(因此它会选择新配置)。

当然,您可以根据自己的要求构建自己的解决方案。

【讨论】:

  • 我可以如何以编程方式执行此操作的任何链接?
  • 不,这并不容易完成:) 当前的解决方案不是以这种方式构建的,这是有原因的。此外,您的解决方案如何知道何时加载新配置,如果在您为新域保存文件时该配置错误怎么办,这会导致您的所有虚拟主机停机?有很多需要考虑的错误和计划。
【解决方案2】:

您可以在不重新启动服务器的情况下重新加载服务器,重新加载可以保持活动连接,因此您可以在不重新启动服务器的情况下加载配置中的更改。

nginx 的命令:nginx -s reload

我建议使用nginx -t && nginx -s reload以便在重新加载之前检查配置

Apache 命令:apachectl -k gracefulsystemctl reload httpd.serviceservice apache2 reloadservice httpd reload(取决于您的环境)

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 2014-09-05
    • 2010-11-10
    • 1970-01-01
    • 2011-03-08
    • 2014-03-01
    • 2011-04-21
    相关资源
    最近更新 更多