nginx 重新加载导致大量下载中断

nginx 重新加载导致大量下载中断

我正在运行 nginx 1.9.3。下载大文件(在本例中为 1GiB)并通过“nginx -s reload”重新加载 nginx 时,下载会在多种浏览器中中断,包括(但可能不限于)Opera、Google Chrome 和 Firefox。

使用curl和标准标志(没有额外的标头,只有文件URL),下载工作正常,并且不会中断。

server {
    listen 443 ssl spdy;
    include tls.conf;
    server_name example.com;

    root /var/www/dl;

    access_log logs/dl.access.log;
    error_log logs/dl.error.log;

    error_page 403 https://example.com;
}

据我了解,nginx 进程应该等待任何请求完成后再终止自己,所以我不完全确定为什么会发生这种情况。如果有人可以为我的大脑提供额外的知识或向我指出 nginx 文档中的一些相关指令,我很乐意解决这个问题。 :-)

答案1

这个 nginx 文档。你需要执行优雅重启代替重新加载。简单的重新加载不会正常地重新启动工作进程。

优雅重启将执行以下步骤:

kill -USR2 $(cat /var/run/nginx.pid)
kill -WINCH $(cat /var/run/nginx.pid.oldbin)
kill -QUIT $(cat /var/run/nginx.pid.oldbin)

编辑:嗯,文档实际上是这样写的:

哈普 更改配置,跟上更改的时区(仅适用于 FreeBSD 和 Linux),使用新配置启动新的工作进程,正常关闭旧工作进程

所以就kill -HUP $(cat /var/run/nginx.pid)足够了,并且nginx -s reload似乎做了同样的事情......您的问题会有不同的原因。

相关内容