目前,客户端正在将数据上载到旧的web服务器,但我们希望客户端开始将数据上载到新服务器。
但是,我们希望当前上传到旧服务器继续,而新上传则传递给新服务器。
在所有上传到旧服务器的工作完成后,我们希望所有新请求都会转到新服务器。
我想知道是否可以用NGINX代理来完成这个任务?
代理还应该能够处理web套接字。
可能的想法:
发布于 2016-07-18 19:35:03
这应该在很大程度上“只是工作”的nginx使用上游和可选的,nginx重新加载。我不知道在这种情况下你所说的“特定于一个连接”是什么意思,但是对你的设置做一些假设…
假设上传点应用程序将被称为“上传点”,并且最初它将被移动到point1
,而point2
正是您希望将其移动到的位置:
upstream uploadpoint {
server point1.example.com;
server point2.example.com backup;
}
(有关健康检查等的其他参数,请检查正式的上游文献)。然后,在您的服务器块中,您将指向该位置:
server {
listen 80;
server_name public.example.com;
location /upload {
proxy_pass http://uploadpoint/doupload/;
}
}
在这种情况下,您有一个上游,它更喜欢转到‘point1 1’,但是一旦它关闭,所有东西都会自动进入point2
。在某种程度上,您可以切换主服务器和backup
(或者根据您是否希望拥有辅助设备,甚至删除旧的)并发出一个service nginx reload
或kill -HUP <nginx_pid>
。在您的示例中,这很可能是为了获得一个优雅的切换而不是让point
__1崩溃并进行故障转移。
upstream uploadpoint {
server point2.example.com;
server point1.example.com backup;
}
当nginx重新加载时,它允许连接在发送新东西之前耗尽(我相信这是您所要求的)现有的任何东西。
您还需要查看围绕proxy_pass
的各种选项,特别是[proxy_next_upstream][2]
。
https://serverfault.com/questions/790475
复制