F5社区-F5技术交流中心

博文精选 | nginx 实现接口版本控制

2022-04-24 14:05:24

F5小安

PHPWord

文章速览:

 

行业:互联网

 

关键字:nginx、代码、域名、兼容、版本

 

摘要:近期项目做了不兼容的升级,项目上线时需要考虑两个版本的兼容。由于项目代码并未考虑接口版本控制,因此需要部署一套新版本的系统,并使用 nginx 对两个版本的接口进行分发。

 

阅读时长:3分钟

 

 

以下文章来源于InfoQ!作者:程序员与厨子

 

 

背景

近期项目做了不兼容的升级,项目上线时需要考虑两个版本的兼容。由于项目代码并未考虑接口版本控制,因此需要部署一套新版本的系统,并使用 nginx 对两个版本的接口进行分发。

实现思路

考虑了两种实现实现方式:

  1. 配置新的子域名,用于标识版本号,如:v2.api.xxx.com,新版本使用该域名进行调用

  2. 在原来接口前面添加版本前缀进行标识,如:api.xxx.com/v2/users


考虑项目情况,最终决定使用第二种方式,因为如果使用第一种方式会存在如下问题:

  1. 一些服务需要重新配置域名白名单,如微信小程序需要重新添加业务域名等

  2. 目前项目 tls 没有配置为泛域名,因此如果使用新的域名还需要配置 tls

实现

项目服务使用 php 实现,并使用了 laravel 框架,如果是其他技术实现,需要做相应的修改。

实现步骤:

  1. 启动新的 php-fpm 服务,使用新的端口号 9001,旧版本 php 监听了 9000 端口

  2. 修改 nginx 配置文件如下,为了看起来清晰,这里省略了不相关的配置


注意事项

  1. nginx 中 root 配置一定要放到 location 下,因为两个版本使用的代码不在一个目录

  2. 因为项目中并不存在 /v2 目录,因此通过 fastcgi 转发到 php 的时候(SCRIPT_FILENAME 参数),要捕获去掉 /v2 前缀的路径部分,而不再使用 $fastcgi_script_name 变量

 

 

以上是针对nginx 实现接口版本控制的分享,希望对大家有帮助!

 

 

 

阅读原文

 

声明:本文章版权归原作者及原出处所有 。凡本社区注明“来源:XXX或转自:XXX”的作品均转载自其它媒体,转载目的在于传递分享更多知识,内容为作者个人观点,仅供参考,并不代表本社区赞同其观点和对其真实性负责。本社区转载的文章,我们已经尽可能的对作者和来源进行了注明,若因故疏忽,造成漏注,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本社区拥有对此声明的最终解释权。

发布评论 加入社群

发布评论

相关文章

博文精选 | nginx 性能优化 -- 配置解析

F5小安

2022-07-21 10:35:06 512

博文精选 | 漫画 Nginx 的 subfilter

F5小安

2022-05-27 13:57:18 409

博文精选 | 一篇文章搞定 Nginx 反向代理与负载均衡

F5小安

2022-05-26 10:31:14 917

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1