Hello! 2016-01-10 20:20 GMT-08:00 凭栏: > 我用balancer_by_lua 和 ngx.balancer 实现动态upstream列表时, > 在access_by_lua 阶段从redis > 获取了server列表,从中选出一个写入lrucache,然后在balancer_by_lua_block 从lrucache中获取服务器的IP,再调用 > balancer.set_current_peer 。请问当后端的server 出现504或者timeout之类的,如何使用 upstream_next > 选择下一个server? balancer_by_lua* 会在 retry 的时候自动被重新调用(当然,retry 本身是由 proxy_next_upstream 和 proxy_next_upstream_tries 这样的配置指令来控制的)。你可以使用 ngx.balancer 模块时里面的 Lua 接口获取上一次失败的尝试的错误细节: https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/balancer.md#get_last_failure Regards, -agentzh