原配置写成:
#Dynamic Server list
upstream dynamic_server_group {
server dn1.xxx.com;
}
#Static Server list
upstream static_server_group {
server dn2.xxx.com;
server dn3.xxx.com;
}
server{
location / {
index index.html index.htm
proxy_pass http://static_server_group
if ($query_string ~*/"name=(.*)$"){
proxy_pass http://dynamic_server_group
#如果传参后跳转动态查询服务器。
}
}
}
以上配置在url传参时并不跳转到动态服务器执行查询。而是还是跳转到静态服务器上。
我修改为一下配置后可以实现:
#Static Server list
upstream static_server_group {
server dn2.xxx.com;
server dn3.xxx.com;
}
server{
location / {
index index.html index.htm
proxy_pass http://static_server_group
if ($query_string ~*/"name=(.*)$"){
set $dynamic_server dn1.xxx.com
proxy_pass http://$dynamic_server
}
}
}
请问是否nginx不支持在location中嵌套使用多个upsteam设置?
你的 location 中的 if 是发生在 rewrite 阶段的逻辑,所以达不到你想要的效果
你需要看下 nginx 各个配置在 nginx 的哪个阶段生效..