アクセスが拒否されたため、Windowsでのnginxの停止/再読み込みに失敗しました


11

WindowsサービスとしてWindows Server 2008 R2(x64)で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トレースは、問題の特定に役立つはずです。Process Monitorアプリケーションをダウンロードして実行し、トレースを開始し、前に実行した手順を繰り返して(アクセス拒否エラーを再現します)、トレースを停止し、PMLファイル(すべてのイベント)として保存し、ファイルを共有できます私たちと一緒に、ソリューションを提供できるかもしれません。
トマスDabasinskas

回答:


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はどこにありますか?コンテキストは重要です!
ロエル


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

reloadサービス実行と同じアカウントから実行する必要があります。たとえば、nginxをSYSTEMとして実行する場合、次のpsexecツールを使用できます。

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


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.