如何根据 Accept 标头配置 nginx 进行反向代理?

如何根据 Accept 标头配置 nginx 进行反向代理?

假设我有 nginx 反向代理到本地 HTTP 服务器。

如果我想要 /wombat 下的所有内容,我可以使用

    location /wombat {
        include proxy_params;
        proxy_pass http://unix:/home/marnanel/whatever.sock;
    }

但是我该如何根据Accept标头中请求的 MIME 类型告诉 nginx 进行反向代理?

就像是

    accept image/* {
        include proxy_params;
        proxy_pass http://unix:/home/marnanel/whatever.sock;
    }

只是不是那样,因为这是我编造的。

答案1

您可以map根据条件将 Accept 标头值映射到变量(在本例中,我正在检查"application/json"Accept 标头

map $http_accept $upstream_value {
    default "app_upstream";
    "application/json" "foo_upstream";
}

进而

proxy_pass http://$upstream_value/;

相关内容