目前,客户端正在将数据上传到旧的Web服务器,但我们希望客户端开始将数据上传到新的服务器。
但是,我们希望当前上传到旧的服务器继续,而新的上传通过新的服务器。
所有上传到旧服务器完成后,我们希望所有新的请求去新的服务器。
我想知道这是否可以用NGINX代理来完成?
代理也应该能够处理networking套接字。
可能的想法:
这应该与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”,但一旦下降,一切都将自动开始去点2。 在某些时候,你可以切换主backup (或者甚至根据你是否想要backup删除旧的),然后发出一个service nginx reload或者kill -HUP <nginx_pid> 。 在你的情况下,这可能是你会得到一个优雅的开关,而不是让第一point和故障转移 。
upstream uploadpoint { server point2.example.com; server point1.example.com backup; }
当nginx重新加载时,在发送新东西之前,它允许连接耗尽(我相信是你要求的)任何存在的东西。
你也会想[proxy_next_upstream][2] proxy_pass的各种选项,特别是[proxy_next_upstream][2] 。