乐趣区

通过nginx重写rewrite将老版本api接口转发到新版本接口上

问题:

项目开始,nginx 是通过匹配 control 来转发的,后面随着业务不停增加,每次都需要修改 nginx,甚是麻烦,所以决定为不同的 服务 取一个名称——服务域名称,然后我们通过匹配服务域名称的模式就解决这个不同修改配置的问题了。

刚开始的 nginx 配置:

location ~* /api/AppVersion {proxy_pass http://192.168.1.88:8888;}

目前期望的配置 (serviceName 后面包含 n 多控制器):

location ~* /api/Business {proxy_pass http://192.168.1.88:8888;}

如果只是 web 站点,这么做就差不多 ok 了,但是我们有一个app,老版本需要升级,只能调用第一中接口,但是我们新版本的接口都加上了serviceName/api/Business/AppVersion), 目前想到两种方式:

1、提供新老版本的 api 接口;
2、通过 nginx 配置重写(重新转发)——当时不会,只是知道 nginx 强大,应该能够支持;

所以查找了一下,以作备忘:

location ~* /api/AppVersion/GetVersion {rewrite ^ http://192.168.1.88:8888/api/Business/AppVersion/GetVersion;}

那么当你调用老接口 /api/AppVersion/GetVersion 的时候,nginx 会自动帮你转发到新接口上/api/Business/AppVersion/GetVersion,也不需要修改代码,安全方便;

退出移动版