16 votes

L'arrêt/le rechargement de nginx sur Windows a échoué pour Access is denied (Accès refusé)

J'exécute nginx sur Windows Server 2008 R2 (x64) en tant que service Windows. J'utilise Windows Service Wrapper pour cela. (En fait, j'ai suivi ce tutoriel : http://mercurial.selenic.com/wiki/HgServeNginxWindows .)

Le service fonctionne bien. Cependant, le serveur ne traite pas les signaux (par exemple, arrêt / rechargement).

Cela signifie que si j'arrête le service, nginx n'est pas arrêté. (Je dois le tuer.)

Et quand je veux recharger la configuration à partir de la ligne de commande :

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

Il sort :

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

J'exécute la commande en tant qu'administrateur et le service est exécuté sous l'utilisateur NETWORK SERVICE.

Des conseils ou des problèmes similaires ?

6voto

Yaroslav Sivakov Points 141

Vous devez exécuter reload à partir du même compte que le service exécuté. Par exemple, si vous exécutez votre nginx en tant que SYSTEM, vous pouvez utiliser psexec outil :

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

2voto

user332561 Points 31

J'exécute mon service nginx sous LOCAL SYSTEM et j'utilise la configuration xml suivante :

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

J'utilise Windows Service Wrapper 1.18 et cette configuration fonctionne pour moi. Les processus Nginx devraient être stoppés gracieusement maintenant. Bonne chance.

2voto

Lei Zhao Points 111

D'après votre résultat, je suppose que vous êtes sur une machine Windows. J'ai rencontré exactement le même problème. J'ai résolu mon problème en découvrant que le Nginx était géré par NSSM. J'ai installé le Nginx via chocolatey et il a traité NSSM comme une dépendance.

Lancez une invite de commande administrative et exécutez ce qui suit.

nssm restart nginx

1voto

Pour que cela fonctionne sur Windows 10 avec nginx 1.9.15, j'ai dû ajouter

-p c:\nginx 

dans les arguments d'arrêt

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

0voto

Theresa Points 21

Quelques trucs à essayer :

  1. Pourquoi exécuter dans le compte SERVICE RÉSEAU ? Essayez avec le compte par défaut pour tous les services, LocalSystem.

  2. Suivez ce tutoriel pour essayer un autre wrapper, AlwaysUp . Si cela fonctionne, il se peut que vous rencontriez un problème avec Windows Service Wrapper.

Veuillez signaler ce que vous trouvez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X