我想通过反向代理连接到服务器nginx
,并根据响应(例如,4xx
)将请求转发到第二个代理。因此,当请求到达时,nxinx 会将其传递给第一个代理。如果第一个代理给出非错误响应,则它应该正常返回。如果它返回错误,则 nginx 应该将其发送到第二个代理并返回该响应。
从粗略阅读文档来看,我认为我不能仅通过配置来做到这一点。我可以编写一个 nginx 扩展来做到这一点,但我想问问是否可以不编写额外的代码来实现。
答案1
我认为您所说的内容在标准配置下不可能实现。我认为没有办法拦截响应并有条件地重新处理它。
此外,即使你编写了一个模块,延迟也可能是一个问题。你需要在后端进行 2 次往返才能将数据发送到客户端。
我知道您问的是 Nginx,但 Varnish 有方法可以重新处理来自后端的请求。请参阅 varnish-cache.org/trac/wiki/VCLExampleRestarts