nginx为特定请求指定服务器

时间:2015-12-27 12:15:59

标签: nginx upload load-balancing distributed sticky-session

我们说ip_hash;启用了4个不同服务器之间的负载均衡。因此,客户端的IP地址用作散列密钥,以确定其请求被路由到哪个服务器。

但是,对于文件上传,最好将所有文件保留在单个服务器中。因此,我希望所有/upload个请求都被路由到服务器1 以用于任何客户端。这意味着所有请求都遵循IP哈希,但必须发送到服务器1的POST /upload除外。

有没有办法在NGINX中创建此异常?谢谢!

1 个答案:

答案 0 :(得分:0)

定义两个upstream容器,一个具有完全负载平衡,另一个具有POST特定服务要求:

upstream balancing { ... }
upstream uploading { ... }

此外,在http容器中,定义请求方法的map

map $request_method $upstream {
    default balancing;
    POST    uploading;
}

最后,在server容器中,为proxy_pass URI定义特定的/upload

location / {
    proxy_pass http://balancing;
}
location /upload {
    proxy_pass http://$upstream;
}

上游规范是根据REQUEST_METHOD的值进行评估的。