nginx stop / reload pada windows gagal karena Access ditolak

13

Saya menjalankan nginx di Windows Server 2008 R2 (x64) sebagai layanan windows. Saya menggunakan Windows Service Wrapper untuk itu. (Sebenarnya, saya telah mengikuti tutorial ini: http://mercurial.selenic.com/wiki/HgServeNginxWindows .)

Layanan berjalan ok. Namun, server tidak memproses sinyal (mis. Stop / reload).

Ini berarti jika saya menghentikan layanan, nginx tidak berhenti. (Aku harus membunuhnya.)

Dan ketika saya ingin memuat ulang konfigurasi dari baris perintah:

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

Ini menghasilkan:

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

Saya menjalankan perintah sebagai administrator dan layanan berjalan di bawah pengguna LAYANAN NETWORK.

Ada petunjuk atau masalah serupa?

TN.
sumber
Jejak ProcMon harus dapat membantu mengidentifikasi masalah. Jika Anda dapat mengunduh aplikasi Monitor Proses , jalankan, mulai tracing, ulangi langkah-langkah yang Anda lakukan sebelumnya (sehingga Anda akan mereproduksi kesalahan Akses Ditolak ), hentikan jejak, simpan sebagai file PML ( Semua Acara ), dan bagikan file tersebut dengan kami, kami mungkin dapat memberikan solusi.
Tomas Dabasinskas

Jawaban:

2

Anda harus menjalankan reloaddari akun yang sama dengan menjalankan layanan. Misalnya, jika Anda menjalankan nginx sebagai SISTEM, maka Anda dapat menggunakan psexecalat:

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

Yaroslav Sivakov
sumber
1

Saya menjalankan layanan nginx di bawah SISTEM LOKAL dan saya menggunakan konfigurasi xml berikut:

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

Saya menggunakan Windows Service Wrapper 1.18 dan konfigurasi ini berfungsi untuk saya. Proses nginx harus dihentikan dengan anggun sekarang. Semoga berhasil.

ssanchezz23
sumber
di mana menemukan xml ini? Konteks itu penting!
Roel
0

Beberapa hal untuk dicoba:

  1. Mengapa dijalankan di akun LAYANAN NETWORK? Coba dengan default untuk semua layanan, LocalSystem.

  2. Ikuti tutorial ini untuk mencoba pembungkus lain, AlwaysUp . Jika berhasil maka Anda mungkin menghadapi masalah dengan Windows Service Wrapper.

Silakan laporkan apa yang Anda temukan.

CoreTech
sumber
0

agar bisa bekerja untuk saya di Windows 10 dengan nginx 1.9.15 saya harus menambahkan

-p c:\nginx 

dalam argumen berhenti

<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
sumber
0
  1. Buka cmdsebagai Administrator .
  2. Kemudian cdke folder tempat nginx berada dan kemudian jalankan perintah:

cmd (sebagai Administrator)

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