Nginx / Node.JS - 仅在节点服务器完全启动后启动Nginx

时间:2017-07-11 06:44:20

标签: node.js nginx docker

如何将nginx systemd服务配置为仅在node.js服务器完全启动后启动。

我有一台带有1个CPU和5个systemd服务的ubuntu服务器:

  1. nginx_dashboard.service
  2. 4 X dashboard_customer@.service
  3. 所有服务在启动时运行,并且所有服务都在运行docker个容器。只有nginx容器暴露在外面,它是链接到4个node应用程序的容器。

    问题在于,由于1个CPU和所有服务一起启动,node应用程序启动(10-13秒)需要几秒钟,而更轻的nginx启动立即。 我尝试将RequiresAfter添加到nginx服务中,但由于节点服务正在运行,但它没有帮助,但容器内的应用程序本身需要时间来加载。

    如果nginx关闭,我的内容传送系统(在本例中为CloudFlare)知道提供临时页面。但是由于这种延迟,nginx已经启动,我的仪表板停机几秒钟。

    问题是我是否可以阻止此延迟并仅在node.js应用程序完全启动后启动nginx,而不仅仅是docker容器。

1 个答案:

答案 0 :(得分:0)

您可以创建/healthz路线,以检查应用是否准备就绪。在你的nginx服务中,你可以递归检查应用程序是否准备就绪(/healthz返回http状态代码200)并且只有在它准备好后才开始。