nginx stop / reload บน windows ล้มเหลวสำหรับ Access ถูกปฏิเสธ


13

ฉันใช้งาน nginx บน Windows Server 2008 R2 (x64) เป็นบริการ windows ฉันใช้ 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 ของคุณเป็นระบบคุณสามารถใช้psexecเครื่องมือ:

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


1

ฉันใช้งาน nginx-service ของฉันภายใต้ LOCAL SYSTEM และฉันใช้การกำหนดค่า 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

ลองทำสองสิ่ง:

  1. ทำไมจึงต้องทำงานในบัญชี NETWORK SERVICE ลองด้วยค่าเริ่มต้นสำหรับบริการทั้งหมด LocalSystem

  2. ติดตามการกวดวิชานี้จะลองเสื้อคลุมอีก AlwaysUp หากใช้งานได้แสดงว่าคุณอาจประสบปัญหากับ Windows Service Wrapper

กรุณารายงานสิ่งที่คุณพบ


0

เพื่อให้มันทำงานกับฉันใน Windows 10 ด้วย nginx 1.9.15 ฉันต้องเพิ่ม

-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. จากนั้นcdไปที่โฟลเดอร์ที่ตั้ง nginx จากนั้นเรียกใช้คำสั่ง:

cmd (ในฐานะผู้ดูแลระบบ)

cd E:\apath\nginx\nginx.exe
nginx -s reload
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.