échec de l'arrêt / rechargement de nginx sous Windows car l'accès est refusé


13

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 depuis la ligne de commande:

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

Il génère:

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

J'exécute la commande en tant qu'administrateur et le service s'exécute sous l'utilisateur SERVICE RÉSEAU.

Des conseils ou des problèmes similaires?


Une trace ProcMon devrait être en mesure d'aider à identifier le problème. Si vous pouviez télécharger l' application Process Monitor , l'exécuter, démarrer le suivi, répéter les étapes que vous avez effectuées auparavant (pour reproduire l' erreur Access Denied ), arrêter la trace, l'enregistrer en tant que fichier PML ( tous les événements ) et partager le fichier avec nous, nous pourrions être en mesure de fournir la solution.
Tomas Dabasinskas

Réponses:


2

Vous devez exécuter à reloadpartir du même compte que l'exécution du service. Par exemple, si vous exécutez votre nginx en tant que SYSTEM, vous pouvez utiliser l' psexecoutil:

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


1

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 maintenant être arrêtés sans problème. Bonne chance.


où trouver ce xml? Le contexte est important!
Roel


0

pour que cela fonctionne pour moi 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>

0
  1. Ouvrez en cmdtant qu'administrateur .
  2. Ensuite, cddans le dossier où se trouve nginx, puis exécutez les commandes:

cmd (en tant qu'administrateur)

cd E:\apath\nginx\nginx.exe
nginx -s reload
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.