应用场景一:
相同一个请求地址,根据header的某个项值,定向到不同的目标服务器,如图所示:
配置方法:
转发规则配置,使用$http_XXX
,来获取header指定的值,$http_
为固定格式,XXX
为自定义header字段名。
nginx配置
server {
location / {
proxy_pass $http_redirecthost;
}
}
转发效果:
例:
访问请求URL:http://aaa.com/abc/text header携带redirecthost项的值为"http://1.1.1.1"
会被转发到URL:http://1.1.1.1/abc/text
应用场景二:
根据URL特征项目,定向到不同的目标服务器,例如:
http://aaa.com/1.1.1.1/trans/text ==》http://1.1.1.1/trans/text
http://aaa.com/1.1.1.2/trans/text ==》http://1.1.1.2/trans/text
http://aaa.com/1.1.1.3/trans/text ==》http://1.1.1.3/trans/text
配置方法:
首先正则匹配到特征项目,比如例子中的trans
,然后拼接新的URL,就行转发
nginx配置
location ~/(.*)/trans/(.*) {
proxy_pass http://$1/api/$2;
}
这个配置有一个小问题,转发后会丢失get请求的参数部分。URL结尾添加 ?args 可以解决该问题
location ~/(.*)/trans/(.*) {
proxy_pass http://$1/api/$2?args;
}