Używam nginx na Windows Server 2008 R2 (x64) jako usługa Windows. Używam do tego opakowania usługi Windows. (Właściwie wykonałem ten samouczek: http://mercurial.selenic.com/wiki/HgServeNginxWindows .)
Usługa działa poprawnie. Jednak serwer nie przetwarza sygnałów (np. Zatrzymaj / przeładuj).
Oznacza to, że jeśli zatrzymam usługę, nginx nie zostanie zatrzymany. (Muszę to zabić.)
A kiedy chcę ponownie załadować konfigurację z wiersza poleceń:
C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload
Wyprowadza:
nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied)
Uruchamiam polecenie jako administrator, a usługa jest uruchomiona w ramach usługi NETWORK SERVICE.
Wszelkie wskazówki lub podobne problemy?
Odpowiedzi:
Musisz uruchomić
reload
z tego samego konta co usługa. Na przykład, jeśli uruchamiasz nginx jako SYSTEM, możesz użyćpsexec
narzędzia:PSEXEC -s c:\nginx\nginx.exe -p c:\nginx -s reload
źródło
Uruchamiam moją usługę nginx w systemie LOCAL SYSTEM i używam następującej konfiguracji xml:
Używam Windows Service Wrapper 1.18 i ta konfiguracja działa dla mnie. Procesy Nginx należy teraz zatrzymać z wdziękiem. Powodzenia.
źródło
Kilka rzeczy do wypróbowania:
Po co uruchamiać konto NETWORK SERVICE? Wypróbuj ustawienie domyślne dla wszystkich usług, LocalSystem.
Postępuj zgodnie z tym samouczkiem, aby wypróbować inne opakowanie, AlwaysUp . Jeśli to działa, być może masz problem z Windows Service Wrapper.
Zgłoś, co znajdziesz.
źródło
aby to działało dla mnie na Windows 10 z nginx 1.9.15, musiałem dodać
w argumentach stop
źródło
cmd
jako administrator .cd
przejdź do folderu, w którym znajduje się nginx, a następnie uruchom polecenia:cmd (jako administrator)
źródło