如何将nginx
systemd服务配置为仅在node.js
服务器完全启动后启动。
我有一台带有1个CPU和5个systemd服务的ubuntu服务器:
nginx_dashboard.service
dashboard_customer@.service
所有服务在启动时运行,并且所有服务都在运行docker
个容器。只有nginx
容器暴露在外面,它是链接到4个node
应用程序的容器。
问题在于,由于1个CPU和所有服务一起启动,node
应用程序启动(10-13秒)需要几秒钟,而更轻的nginx
启动立即。
我尝试将Requires
和After
添加到nginx服务中,但由于节点服务正在运行,但它没有帮助,但容器内的应用程序本身需要时间来加载。
如果nginx
关闭,我的内容传送系统(在本例中为CloudFlare)知道提供临时页面。但是由于这种延迟,nginx已经启动,我的仪表板停机几秒钟。
问题是我是否可以阻止此延迟并仅在node.js应用程序完全启动后启动nginx,而不仅仅是docker容器。
答案 0 :(得分:0)
您可以创建/healthz
路线,以检查应用是否准备就绪。在你的nginx服务中,你可以递归检查应用程序是否准备就绪(/healthz
返回http状态代码200)并且只有在它准备好后才开始。