一、前言

        一般来说,我们更新服务器的springboot项目需要先停下旧的jar包,然后运行新的jar包,中间有一小段时间用户没法访问,虽然时间很短,但是这样也会造成用户体验不好,通过Nginx可以达到无缝切换,优雅发版。注意,本文仅针对单台服务器的情况,多台服务器可以采用分批下线的方式达到无缝切换。

二、准备

        需要先安装Nginx,配置域名转发到指定端口

三、发版步骤

需要先配置Nginx,配置方式请百度。

        1.打新的jar包,注意端口需要与旧的jar包不同。

        2.放到服务器,运行新的jar包(此时新旧jar包都在运行)

        3.修改Nginx配置文件,把域名的转发端口指向新的jar包

        4.验证是否成功转发到新的jar包

        5.关闭旧的jar包

四、总结

        通过上述步骤,基本可以做到用户无感知发版。需要注意的是,关掉旧的jar包前需要确认是否成功转发的新的jar包,springboot的某些连接未释放可能会导致配置文件修改不生效(我经历过Nginx没法刷新配置的情况,最后猜测是前端请求数据,后端迟迟未返回并且没有释放连接)。