Windows 上的 nginx 停止/重新加载失败,因为访问被拒绝

TN.*_*TN. 13 windows windows-service nginx

我在 Windows Server 2008 R2 (x64) 上运行 nginx 作为 Windows 服务。为此,我正在使用 Windows 服务包装器。(实际上,我已经按照本教程进行了操作: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
Run Code Online (Sandbox Code Playgroud)

它输出:

nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied)
Run Code Online (Sandbox Code Playgroud)

我以管理员身份运行命令,该服务在 NETWORK SERVICE 用户下运行。

任何提示或类似问题?

小智 5

您必须reload使用与服务运行相同的帐户运行。例如,如果您以 SYSTEM 身份运行 nginx,则可以使用psexec工具:

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


小智 0

有几点值得尝试:

  1. 为什么要在 NETWORK SERVICE 帐户中运行?尝试使用所有服务的默认值 LocalSystem。

  2. 按照本教程尝试另一个包装器 AlwaysUp。如果它有效,那么您可能面临 Windows Service Wrapper 的问题。

请报告您的发现。