Nginx / Node.JS – 只有在节点服务器完全启动后才启动Nginx
如何configurationnginx
systemd服务才能在node.js
服务器完全启动后启动。
我有一个具有1个CPU和5个systemd服务的Ubuntu服务器:
-
nginx_dashboard.service
- 4 X
dashboard_customer@.service
所有服务都在启动时运行,并且都运行docker
容器。 只有nginx
容器暴露在外,并且是连接到4 node
应用程序的那个容器。
问题在于,由于1个CPU和所有服务一起启动, node
应用程序需要几秒钟才能启动(10-13秒),而较轻的nginx
立即启动。 我尝试将Requires
和After
添加到nginx服务中,但是由于节点服务正在运行,所以它没有帮助,但是容器内的应用程序本身需要花费时间来加载。
如果nginx
closures,我的内容交付系统(在这种情况下,CloudFlare)知道提交一个临时页面。 但是由于这个延迟,nginx已经启动,我的仪表板停机了几秒钟。
问题是如果我可以防止这种延迟,并且只有在node.js应用程序完全运行之后才启动nginx,而不仅仅是docker容器。
您可以创build一个/healthz
路线来检查应用程序是否准备就绪。 在您的nginx服务中,您可以recursion地检查应用程序是否准备就绪( /healthz
返回http状态码200),只有在准备就绪后才能启动。