Ich verwende nginx unter Windows Server 2008 R2 (x64) als Windows-Dienst. Ich benutze dafür Windows Service Wrapper. (Eigentlich habe ich dieses Tutorial befolgt: http://mercurial.selenic.com/wiki/HgServeNginxWindows .)
Der Dienst läuft in Ordnung. Der Server verarbeitet die Signale jedoch nicht (z. B. Stop / Reload).
Das heißt, wenn ich den Dienst beende, wird nginx nicht gestoppt. (Ich muss es töten.)
Und wenn ich die Konfiguration über die Befehlszeile neu laden möchte:
C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload
Es gibt aus:
nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied)
Ich führe den Befehl als Administrator aus und der Dienst wird unter dem Benutzer NETWORK SERVICE ausgeführt.
Irgendwelche Hinweise oder ähnliche Probleme?
Antworten:
Ich führe meinen Nginx-Service unter LOCAL SYSTEM aus und verwende folgende XML-Konfiguration:
Ich verwende Windows Service Wrapper 1.18 und diese Konfiguration funktioniert für mich. Nginx-Prozesse sollten jetzt ordnungsgemäß gestoppt werden. Viel Glück.
quelle
Ein paar Dinge zu versuchen:
Warum im NETWORK SERVICE-Konto ausführen? Versuchen Sie es mit der Standardeinstellung für alle Dienste, LocalSystem.
Folgen Sie diesem Tutorial, um einen anderen Wrapper, AlwaysUp, auszuprobieren . Wenn es funktioniert, liegt möglicherweise ein Problem mit Windows Service Wrapper vor.
Bitte melden Sie, was Sie finden.
quelle
Damit es unter Windows 10 mit Nginx 1.9.15 für mich funktioniert, musste ich hinzufügen
in den Stop-Argumenten
quelle
Sie müssen
reload
von demselben Konto wie der Dienst ausgeführt werden. Wenn Sie beispielsweise Ihren Nginx als SYSTEM ausführen, können Sie das folgendepsexec
Tool verwenden:PSEXEC -s c:\nginx\nginx.exe -p c:\nginx -s reload
quelle
cmd
Als Administrator öffnen .cd
Gehen Sie dann zu dem Ordner, in dem sich nginx befindet, und führen Sie die folgenden Befehle aus:cmd (als Administrator)
quelle