多版本部署如何使用nginx根据url参数api_version值进行路由

目标:实现多版本部署,并且使用nginx根据HTTP请求中的url参数’api_version’来进行请求的路由,将对应版本的请求分发到目标版本实例当中。

实际测试场景:

tomcat部署启动了2个实例:

  • 127.0.0.1:8080
  • 127.0.0.1:8081

本地部署一个nginx服务器,对所有请求进行代理和路由。
部署的nginx简单配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
worker_processes  1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
location /client {
if ( $arg_api_version = '1.0.0' ){
proxy_pass http://localhost:8080;
break;
}
if ( $arg_api_version = '1.0.1' ){
proxy_pass http://localhost:8081;
break;
}
proxy_pass http://localhost:8080;
}
location / {
proxy_pass http://localhost:8080;
}
}
}

预先配置好本地host,以便直接使用域名访问。

1
127.0.0.1 local.xxx.com

说明: