2017-07-11 2 views
0

Wie kann ich den Systemdienst nginx so konfigurieren, dass er erst gestartet wird, nachdem ein node.js Server vollständig gestartet wurde.Nginx/Node.JS - Nginx erst starten, nachdem der Knotenserver vollständig hochgefahren ist

Ich habe einen Ubuntu-Server mit 1 CPU und 5 systemd Dienstleistungen:

  1. nginx_dashboard.service
  2. 4 X [email protected]

alle Dienste beim Systemstart ausgeführt und alle docker Container ausgeführt werden. Nur der nginx Container ist außerhalb exponiert und es ist derjenige, der mit den 4 node Anwendungen verknüpft ist.

Das Problem ist, dass wegen der 1 CPU und aller Dienste, die zusammen starten, es einige Sekunden dauert, bis die node Anwendungen starten (10-13 Sekunden), während das viel leichtere nginx sofort startet. Ich habe versucht, Requires und zum Nginx-Dienst hinzufügen, aber es hilft nicht, da die Knoten-Dienste ausgeführt werden, aber die App selbst innerhalb der Container braucht Zeit zum Laden.

Falls die nginx nicht verfügbar ist, kann mein Inhaltsliefersystem (in diesem Fall - CloudFlare) eine temporäre Seite anzeigen. Aber wegen dieser Verzögerung ist der Nginx-Modus abgelaufen und ich habe ein paar Sekunden Ausfallzeit auf meinem Dashboard.

Die Frage ist, ob ich diese Verzögerung verhindern und nginx erst starten kann, nachdem die node.js-Anwendung vollständig ausgeführt wurde, nicht nur der Docker-Container.

Antwort

0

Sie können eine Route /healthz erstellen, um zu überprüfen, ob die App bereit ist. In Ihrem nginx-Dienst können Sie rekursiv prüfen, ob die App bereit ist (/healthz gibt den HTTP-Statuscode 200 zurück) und erst starten, wenn sie fertig ist.

+0

Wie kann ich 'nginx' konfigurieren, um vor dem Start Health Checks durchzuführen? – TomG

+0

@TomG Sie müssen die nginx-Servicedatei bearbeiten und diese Logik selbst hinzufügen. –

+0

Die Health-Check-Option in der nginx-Konfiguration ist nur im nginx plus-Programm und nicht im Open-Source-Projekt verfügbar – TomG

Verwandte Themen