首页 > 解决方案 > NGINX基于请求标头集的反向代理?

问题描述

如果用户请求没有一标头,则反向代理响应应路由到不同的后端服务器,否则如果请求具有这些标头,则请求必须转到不同的服务器。

在 NGINX 中是否有可能,我们如何做到这一点?

标签: nginxnginx-reverse-proxy

解决方案


假设您正在使用x-backend-pool请求标头,您可以使用以下 NGINX 模块来获取您想要的内容:http: //nginx.org/en/docs/http/ngx_http_map_module.html#map

map 指令允许您根据其他变量中的值设置变量,我在下面为您提供了一个示例:

upstream hostdefault {
    server 127.0.0.1:8080;
}

upstream hosta {
    server 127.0.0.1:8081;
}

upstream hostb {
    server 127.0.0.1:8082;
}

map $http_x_backend_pool $backend_pool {
    default   "hostdefault";
    a         "hosta";
    b         "hostb";
}

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://$backend_pool;
    }
}

推荐阅读