nginx stop / ricaricare su windows fallito per Accesso negato


13

Sto eseguendo nginx su Windows Server 2008 R2 (x64) come servizio di Windows. Per questo sto usando Windows Service Wrapper. (In realtà, ho seguito questo tutorial: http://mercurial.selenic.com/wiki/HgServeNginxWindows .)

Il servizio funziona bene. Tuttavia, il server non elabora i segnali (ad es. Arresto / ricarica).

Ciò significa che se interrompo il servizio, nginx non viene arrestato. (Devo ucciderlo.)

E quando voglio ricaricare la configurazione dalla riga di comando:

C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload

Emette:

nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied)

Sto eseguendo il comando come amministratore e il servizio è in esecuzione sotto l'utente SERVIZIO DI RETE.

Suggerimenti o problemi simili?


Una traccia ProcMon dovrebbe essere in grado di aiutare a identificare il problema. Se è possibile scaricare l' applicazione Process Monitor , eseguirla, avviare la traccia, ripetere i passaggi precedenti (in modo da riprodurre l' errore Accesso negato ), interrompere la traccia, salvarla come file PML ( Tutti gli eventi ) e condividere il file con noi, potremmo essere in grado di fornire la soluzione.
Tomas Dabasinskas,

Risposte:


2

È necessario eseguire reloaddallo stesso account dell'esecuzione del servizio. Ad esempio, se esegui nginx come SYSTEM, puoi utilizzare lo psexecstrumento:

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


1

Eseguo il mio servizio nginx in LOCAL SYSTEM e utilizzo la seguente configurazione xml:

<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>

Sto utilizzando Windows Service Wrapper 1.18 e questa configurazione funziona per me. I processi di Nginx dovrebbero essere fermati con grazia ora. In bocca al lupo.


dove trovare questo xml? Il contesto è importante!
Roel,


0

per farlo funzionare su Windows 10 con nginx 1.9.15 ho dovuto aggiungere

-p c:\nginx 

negli argomenti stop

<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
  1. Apri cmdcome amministratore .
  2. Quindi cdnella cartella in cui si trova nginx ed esegui i comandi:

cmd (come amministratore)

cd E:\apath\nginx\nginx.exe
nginx -s reload
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.