액세스가 거부되어 Windows의 nginx 중지 / 재로드가 실패했습니다. 중지 / 재로드). 즉,

Windows Server 2008 R2 (x64)에서 Windows 서비스로 nginx를 실행하고 있습니다. 나는 그것을 위해 Windows Service Wrapper를 사용하고 있습니다. (실제로, 나는이 튜토리얼을 따랐습니다 : http://mercurial.selenic.com/wiki/HgServeNginxWindows .)

서비스가 정상적으로 실행되고 있습니다. 그러나 서버는 신호를 처리하지 않습니다 (예 : 중지 / 재로드).

즉, 서비스를 중지하면 nginx가 중지되지 않습니다. (나는 그것을 죽여야한다.)

그리고 명령 줄에서 구성을 다시로드하려는 경우 :

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

출력합니다 :

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

관리자 권한으로 명령을 실행 중이며 서비스가 NETWORK SERVICE 사용자로 실행 중입니다.

힌트 나 비슷한 문제가 있습니까?



답변

reload서비스 실행과 동일한 계정으로 실행해야합니다 . 예를 들어, nginx를 SYSTEM으로 실행하면 다음 psexec도구 를 사용할 수 있습니다 .

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


답변

LOCAL SYSTEM에서 nginx-service를 실행하고 다음 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>

Windows Service Wrapper 1.18을 사용하고 있으며이 구성이 적합합니다. Nginx 프로세스는 이제 정상적으로 중지되어야합니다. 행운을 빕니다.


답변

시도해야 할 몇 가지 :

  1. NETWORK SERVICE 계정에서 실행하는 이유는 무엇입니까? 모든 서비스 인 LocalSystem에 대해 기본값을 사용하십시오.

  2. 이 자습서를 따라 다른 래퍼 AlwaysUp을 사용해보십시오 . 작동하면 Windows 서비스 래퍼에 문제가있는 것일 수 있습니다.

찾은 것을보고하십시오.


답변

nginx 1.9.15가 설치된 Windows 10에서 나를 위해 작동하려면 추가해야했습니다.

-p c:\nginx

중지 논쟁에서

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

답변

  1. 열기 cmd관리자 .
  2. 그런 다음 cdnginx가있는 폴더로 이동 한 후 다음 명령을 실행하십시오.

cmd (관리자 권한)

cd E:\apath\nginx\nginx.exe
nginx -s reload