在Windows上记录nginx的旋转

Art*_*ake 2 windows logging signals nginx rotation

我在网上发现了很多用于在linux下旋转nginx日志的引用.只需将USR1信号发送到进程即可.但是......在Windows上不存在unix信号,我无法找到任何相关信息.如何在Windows上使用nginx完成同样的事情?

Art*_*ake 6

实际上,(尽管有大量的谷歌搜索),答案可以在文档页面中找到答案.

命令是:

nginx -s reopen
Run Code Online (Sandbox Code Playgroud)

但这似乎只能在从命令行运行nginx时起作用 - 目前是目前在Windows上运行nginx的唯一官方方式.

我的下一个挑战是弄清楚如何在运行nginx作为Windows服务时如此工作,如下所述:Nginx Windows服务.


Tom*_*ley 6

要在Windows中旋转nginx日志,请创建如下所示的批处理文件:

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set YMD=%%c-%%a-%%b)
move C:\path\to\nginx\logs\Access.log C:\path\to\nginx\logs\Access_%YMD%.log
move C:\path\to\nginx\logs\Error.log C:\path\to\nginx\logs\Error_%YMD%.log
call C:\path\to\nginx\nginx -p C:\path\to\nginx -s reopen
Run Code Online (Sandbox Code Playgroud)

第一行只是创建一个时间戳(杰伊的功劳)

然后在Windows中创建计划任务以运行该批处理文件,以便您经常要旋转日志.

如果nginx作为服务运行(例如通过此处描述的Windows Service Wrapper ),则不能直接调用nginx命令nginx -s reopen.相反,您必须以运行服务的用户身份运行命令.

为此,请创建一个名为nginx(例如)的新用户,并将服务和计划任务配置为以该用户身份运行.您还必须确保您的用户具有" 作为批处理作业登录 "权限.

如果要在命令行上测试旋转脚本而不必使用可以使用的计划任务

runas /user:nginx "C:\path\to\rotateLogs.bat"
Run Code Online (Sandbox Code Playgroud)