13

I am running nginx on Windows Server 2008 R2 (x64) as a windows service. I am using Windows Service Wrapper for that. (Actually, I have followed this tutorial: http://mercurial.selenic.com/wiki/HgServeNginxWindows.)

The service is running ok. However, the server does not process the signals (e.g. stop / reload).

This means if I stop the service, nginx is not stopped. (I have to kill it.)

And when I want to reload the configuration from command line:

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

It outputs:

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

I am running the command as administrator and the service is running under NETWORK SERVICE user.

Any hints or similar issues?

  • A ProcMon trace should be able to help identifying the issue. If you could download Process Monitor application, run it, start the tracing, repeat the steps you done before (so you would reproduce the Access Denied error), stop the trace, save it as PML file (All Events), and share the file with us, we might be able to provide the solution. – Tomas Dabasinskas Mar 21 '16 at 9:50
2

You must run reload from the same account as service run. For example, if you run your nginx as SYSTEM, then you can use psexec tool:

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

|improve this answer|||||
1

I run my nginx-service under LOCAL SYSTEM and I use following xml configuration:

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

I'm using Windows Service Wrapper 1.18 and this configuration works for me. Nginx processes should be stopped gracefully now. Good luck.

|improve this answer|||||
  • where to find this xml? Context is important! – Roel Jun 20 '19 at 12:32
0

A couple things to try:

  1. Why run in the NETWORK SERVICE account? Try with the default for all services, LocalSystem.

  2. Follow this tutorial to try another wrapper, AlwaysUp. If it works then you may be facing a problem with Windows Service Wrapper.

Please report what you find.

|improve this answer|||||
0

in order for it to work for me on Windows 10 with nginx 1.9.15 i had to add

-p c:\nginx 

in the stop arguments

<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>
|improve this answer|||||
0
  1. Open cmd as Administrator.
  2. Then cd to the folder where nginx is located and then run the commands:

cmd (as Administrator)

cd E:\apath\nginx\nginx.exe
nginx -s reload
|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.