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


13

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 사용자로 실행 중입니다.

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


ProcMon 추적은 문제를 식별하는 데 도움이 될 수 있습니다. 프로세스 모니터 애플리케이션을 다운로드 하여 실행하고 추적을 시작한 후 이전에 수행 한 단계를 반복하여 ( 액세스 거부 오류를 재현 함 ) 추적을 중지하고 PML 파일 ( 모든 이벤트 ) 로 저장 한 후 파일을 공유하십시오. 우리와 함께 솔루션을 제공 할 수도 있습니다.
Tomas Dabasinskas

답변:


2

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

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


1

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 프로세스는 이제 정상적으로 중지되어야합니다. 행운을 빕니다.


이 XML을 어디에서 찾을 수 있습니까? 상황이 중요합니다!
Roel


0

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>

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

cmd (관리자 권한)

cd E:\apath\nginx\nginx.exe
nginx -s reload
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.