之前嘗試過將Nginx注冊成windows服務,有用過微軟官方的instsrv/srvany, 以及firedaemon, 雖然可以做服務并啟動,但是當你想要停止服務時,就會出現問題。 主要原因在于nginx有一個守護進程,上述的方式只能關閉主進程,多余的進程沒法關閉。因此每當用上述的方式時,每次停止/重啟服務,都會產生一個多余的nginx進程。非常的不好!
后來發現一個很好的項目:winsw, 可以將可執行文件注冊成windows服務,項目的github地址是 https://github.com/kohsuke/winsw
它的介紹是:A wrApper executable that can be used to host any executable as an Windows service, in a liberal license
用它將nginx注冊成服務后,完美解決上述的問題,使用起來也很簡單,根據.Net Framework的版本,下載對應的支持版本,然后修改配置文件,再使用對應的指令安裝即可。
配置文件的格式如下,

如果是要部署多個nginx服務,保證id和name保持唯一
根據實際情況進行修改,然后用管理員權限,在當前目錄的控制器臺中執行
WinSW.NET4.exe install 進行服務安裝。
成功后,在操作系統的服務列表中,就可以看到對應的服務了

重啟服務和關閉服務,整體表現符合預期,而且系統里也沒有多余的進程.