我正在运行 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
似乎做了同样的事情......您的问题会有不同的原因。