nginx stop / reload unter Windows fehlgeschlagen, da Access verweigert wird


11

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?


Ein ProcMon-Trace sollte in der Lage sein, das Problem zu identifizieren. Wenn Sie die Process Monitor- Anwendung herunterladen , ausführen, die Ablaufverfolgung starten, die zuvor ausgeführten Schritte wiederholen können (damit Sie den Fehler " Zugriff verweigert" reproduzieren ), die Ablaufverfolgung stoppen, als PML-Datei ( Alle Ereignisse ) speichern und die Datei freigeben können Mit uns können wir möglicherweise die Lösung anbieten.
Tomas Dabasinskas

Antworten:


1

Ich führe meinen Nginx-Service unter LOCAL SYSTEM aus und verwende folgende XML-Konfiguration:

<service>
      <id>nginx-service</id>
      <name>nginx-service</name>
      <description>nginx-service</description>
      <executable>c:\nginx\nginx.exe</executable>
      <logpath>c:\nginx\</logpath>
      <logmode>roll</logmode>
      <depend></depend>
      <startargument>-pc:\nginx</startargument>
      <stopexecutable>c:\nginx\nginx.exe</stopexecutable>
      <stopargument>-s</stopargument>
      <stopargument>stop</stopargument>
  </service>

Ich verwende Windows Service Wrapper 1.18 und diese Konfiguration funktioniert für mich. Nginx-Prozesse sollten jetzt ordnungsgemäß gestoppt werden. Viel Glück.


Wo finde ich diese XML? Der Kontext ist wichtig!
Roel


0

Damit es unter Windows 10 mit Nginx 1.9.15 für mich funktioniert, musste ich hinzufügen

-p c:\nginx 

in den Stop-Argumenten

<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>nginx</description>
  <executable>c:\nginx\nginx.exe</executable>
  <logpath>c:\nginx\</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <startargument>-p</startargument>
  <startargument>c:\nginx</startargument>

  <stopexecutable>c:\nginx\nginx.exe</stopexecutable>
  <stopargument>-p</stopargument>
  <stopargument>c:\nginx</stopargument>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>

0

Sie müssen reloadvon demselben Konto wie der Dienst ausgeführt werden. Wenn Sie beispielsweise Ihren Nginx als SYSTEM ausführen, können Sie das folgende psexecTool verwenden:

PSEXEC -s c:\nginx\nginx.exe -p c:\nginx -s reload


0
  1. cmdAls Administrator öffnen .
  2. cdGehen Sie dann zu dem Ordner, in dem sich nginx befindet, und führen Sie die folgenden Befehle aus:

cmd (als Administrator)

cd E:\apath\nginx\nginx.exe
nginx -s reload
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.