【问题标题】:nginx specify server for a particular requestnginx 为特定请求指定服务器
【发布时间】:2016-04-01 12:31:06
【问题描述】:

假设我打开了ip_hash; 以在 4 个不同的服务器之间进行负载平衡。因此,客户端的 IP 地址用作哈希键来确定他的请求被路由到哪个服务器。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    另外,在http容器中,定义一个map的请求方法:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多