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?


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


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.


di mana menemukan xml ini? Konteks itu penting!
Roel


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>

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.