当我使用命名pipe道作为日志文件并删除并重新创buildpipe道时,nginx会发生什么?

我使用命名pipe道作为我的nginx的access_log日志文件,我想知道当我删除并重新创buildpipe道时在nginx内部发生了什么。 我注意到,nginx继续工作,但停止日志logging

即使我不再创buildpipe道nginx没有尝试创build一个常规的日志logging文件。

我不想丢失我的日志,但显然唯一的select是重新启动nginx,我可以强制nginx再次检查日志文件吗?

错误日志只是说这个,即使pipe道不存在或pipe道被重新创build:

2012/02/27 22:45:13 [alert] 24537#0: *1097 write() to "/tmp/access.log.fifo" failed (32: Broken pipe) while logging request, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "localhost:8002" 

谢谢。

AFIAK,你需要发送一个USR1信号来指示它重新打开日志文件。 基本上nginx将不断尝试写入旧文件的文件描述符(这就是为什么你看到断管错误)。 更多信息:

http://wiki.nginx.org/LogRotation (也可以点击页面底部的其他链接)。

心连心