Nginx / Node.JS – 只有在节点服务器完全启动后才启动Nginx

如何configurationnginx systemd服务才能在node.js服务器完全启动后启动。

我有一个具有1个CPU和5个systemd服务的Ubuntu服务器:

  1. nginx_dashboard.service
  2. 4 X dashboard_customer@.service

所有服务都在启动时运行,并且都运行docker容器。 只有nginx容器暴露在外,并且是连接到4 node应用程序的那个容器。

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

如果nginxclosures,我的内容交付系统(在这种情况下,CloudFlare)知道提交一个临时页面。 但是由于这个延迟,nginx已经启动,我的仪表板停机了几秒钟。

问题是如果我可以防止这种延迟,并且只有在node.js应用程序完全运行之后才启动nginx,而不仅仅是docker容器。

您可以创build一个/healthz路线来检查应用程序是否准备就绪。 在您的nginx服务中,您可以recursion地检查应用程序是否准备就绪( /healthz返回http状态码200),只有在准备就绪后才能启动。