falha no nginx parar / recarregar no Windows para acesso negado

12

Estou executando o nginx no Windows Server 2008 R2 (x64) como um serviço do Windows. Estou usando o Windows Service Wrapper para isso. (Na verdade, segui este tutorial: http://mercurial.selenic.com/wiki/HgServeNginxWindows .)

O serviço está funcionando bem. No entanto, o servidor não processa os sinais (por exemplo, parar / recarregar).

Isso significa que, se eu interromper o serviço, o nginx não será parado. (Eu tenho que matá-lo.)

E quando eu quero recarregar a configuração da linha de comando:

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

Emite:

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

Estou executando o comando como administrador e o serviço está sendo executado no usuário NETWORK SERVICE.

Alguma dica ou problema semelhante?

TN.
fonte
Um rastreamento do ProcMon deve ajudar a identificar o problema. Se você pudesse fazer o download do aplicativo Process Monitor , execute-o, inicie o rastreamento, repita as etapas anteriores (para reproduzir o erro Acesso Negado ), interrompa o rastreamento, salve-o como arquivo PML ( Todos os Eventos ) e compartilhe o arquivo conosco, poderemos fornecer a solução.
Tomas Dabasinskas 21/03

Respostas:

1

Eu executo meu serviço nginx em LOCAL SYSTEM e uso a seguinte configuração 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>

Estou usando o Windows Service Wrapper 1.18 e essa configuração funciona para mim. Os processos Nginx devem ser interrompidos normalmente agora. Boa sorte.

ssanchezz23
fonte
onde encontrar esse xml? O contexto é importante!
Roel
1

Você deve executar reloadda mesma conta que a execução do serviço. Por exemplo, se você executar o nginx como SYSTEM, poderá usar a psexecferramenta:

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

Yaroslav Sivakov
fonte
0

Algumas coisas para tentar:

  1. Por que executar na conta NETWORK SERVICE? Tente com o padrão para todos os serviços, LocalSystem.

  2. Siga este tutorial para tentar outro wrapper, o AlwaysUp . Se funcionar, você pode estar enfrentando um problema com o Windows Service Wrapper.

Por favor, reporte o que encontrou.

CoreTech
fonte
0

para que ele funcione para mim no Windows 10 com o nginx 1.9.15, tive que adicionar

-p c:\nginx 

nos argumentos de parada

<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>
Steven Kohlmeyer
fonte
0
  1. Abra cmdcomo administrador .
  2. Em seguida, cdvá para a pasta em que o nginx está localizado e execute os comandos:

cmd (como administrador)

cd E:\apath\nginx\nginx.exe
nginx -s reload
Kent Pawar
fonte