Nginx - 将请求重定向到所有后端

时间:2017-02-13 15:53:19

标签: nginx load-balancing reverse-proxy

我有5个后端服务器。我希望nginx将/ myapp / refresh的POST请求转发给所有5个后端服务器。对于任何其他请求,它可以进行负载平衡。这可能吗 ?你能给出样例配置吗?

3 个答案:

答案 0 :(得分:0)

我不知道准备使用解决方案做你想做的事。

可以在C或Lua中实现这种行为。

你可能会开发nginx C模块,但这并不是一项重要的学习任务。

您可以使用https://github.com/openresty/lua-nginx-module并使用类似https://github.com/openresty/lua-nginx-module#ngxlocationcapture_multi的内容。

但是在这两种情况下,你应该在何时以及将要发回的响应中实现某种逻辑。

要考虑的问题 - 如果其中一个后端超时或响应错误,您是否需要以200 OK回复?

答案 1 :(得分:0)

您可以尝试使用ngx_http_mirror_module模块(1.13.4),该模块通过创建背景镜像子请求来实现原始请求的镜像。对镜像子请求的响应将被忽略。 https://nginx.org/en/docs/http/ngx_http_mirror_module.html

答案 2 :(得分:-1)

您应该能够使用简单的配置将nginx用作负载均衡器,例如:

http {
  upstream myproject {
    server 127.0.0.1:8000 weight=3;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
  }

  server {
    listen 80;
    server_name www.domain.com;
    location / {
      proxy_pass http://myproject;
    }
  }
}

文档: https://www.nginx.com/resources/admin-guide/load-balancer/

这应该路由所有请求,包括你提到的POST请求。