我试图将nginx(反向代理)作为Windows服务运行,这样即使用户没有连接也可以代理请求。
我搜索了很多,发现winsw可以从.exe文件(如nginx)创建服务。
我发现许多在线教程说如下创建一个xml文件
<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 c:\nginx</startargument>
<stopargument>-p c:\nginx -s stop</stopargument>
</service>
(我在一个名为nginx的文件夹中将nginx.exe放在c:o路径正确的位置)。
现在问题是服务已经创建,但我似乎无法启动它,每次我尝试启动它时,一个窗口弹出说
Error 1053: The service didn't respond to the start or control request in a timely fashion
有谁知道如何解决这个或不同的方式运行nginx作为窗口服务?
在这里偶然发现并设法使用这个免费的开源替代方案:https://nssm.cc/
它基本上只是一个帮助您创建服务的GUI。我使用的步骤:
从那时起你应该很好。
我找到了NSSM(非吸吮服务经理):一个完全符合我想要的程序,它更容易设置。
我发现除了NSSM之外的其他解决方案。这是Windows Service Wrapper,以下是说明:
<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>
以上答案取自post。
正如在其他答案中所说,NSSM是运行Nginx作为服务的最佳工具。 如果您不想使用任何外部第三方软件,则可以实施这两种方法中的任何一种。
Windows任务计划程序
Windows启动快捷方式
你需要这个为winsw
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>c:\...\nginx.exe</executable>
<logpath>...</logpath>
<logmode>roll</logmode>
<stopexecutable>c:\nginx\nginx-1.14.0\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>
你需要一个<executable>
,假设你使用的是nginx.conf,因此不需要任何启动参数,还需要<stopexecutable>
和<stopargument>
s(以模仿nginx -s stop
)