nginx中基于查询参数的代理pass

abc*_*abc 6 configuration nginx

有没有办法根据查询参数代理传递?我需要将根 url 请求代理传递到服务器 A。但是,如果根 url 具有某些查询参数,我需要将传递代理到服务器 B。我该如何实现?以下是我目前的配置:

    location / {
        proxy_pass  http://xxxxxx;
        proxy_redirect     off;
        proxy_set_header   Host             $host:$server_port;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
    }
Run Code Online (Sandbox Code Playgroud)

cns*_*nst 6

您可以使用if语句和中间变量,因为proxy_pass它本身不能位于if语句内部。

location / {
    set $pp_d example.net;
    if ($arg_tld = com) {
        set $pp_d example.com;
    }
    proxy_pass http://$pp_d;
    proxy_redirect off;
    ...
}
Run Code Online (Sandbox Code Playgroud)