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