Я использую nginx на Windows Server 2008 R2 (x64) в качестве службы Windows. Я использую 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.
Есть намеки или похожие проблемы?
windows
nginx
windows-service
Тонна
источник
источник
Ответы:
Вы должны работать
reload
с той же учетной записи, что и служба. Например, если вы запускаете nginx как SYSTEM, вы можете использоватьpsexec
инструмент:PSEXEC -s c:\nginx\nginx.exe -p c:\nginx -s reload
источник
Я запускаю свой nginx-сервис в локальной системе и использую следующую конфигурацию xml:
Я использую Windows Service Wrapper 1.18, и эта конфигурация работает для меня. Процессы Nginx должны быть остановлены изящно сейчас. Удачи.
источник
Несколько вещей, чтобы попробовать:
Зачем работать в учетной записи NETWORK SERVICE? Попробуйте по умолчанию для всех сервисов LocalSystem.
Следуйте этому руководству, чтобы попробовать другую оболочку AlwaysUp . Если это работает, то вы можете столкнуться с проблемой с Windows Service Wrapper.
Пожалуйста, сообщите, что вы найдете.
источник
чтобы он работал на Windows 10 с nginx 1.9.15, мне пришлось добавить
в аргументах остановки
источник
cmd
как администратор .cd
в папку, где находится nginx, а затем выполните команды:CMD (как администратор)
источник