如何在错误回退中覆盖从proxy_pass接收到的状态代码



我的nginx-config:上有这个设置

location @img_fallback {
try_files $uri =404;
}
location ~ .(png|jpe?g)$ {
proxy_intercept_errors on;
error_page 500 502 503 504 @img_fallback;
proxy_pass https://someinternalservice.com:3000;
}

这运行得很好,它首先尝试代理,如果遇到任何错误,则重试_files,但问题是,如果代理返回任何错误(如502(,并且try_files找到映像,即使映像本身加载,我们仍然会得到502状态代码。

我们如何确保在发生错误时,在响应中不使用代理发送的状态?

当指定的错误处理程序将由另一个上游处理时(例如,当您有类似error_page 502 /error_handler.php的东西将由PHP-FPM后端处理时(,或者当错误处理程序是一个命名位置时,可以告诉nginx处理程序可以使用=符号更改HTTP响应代码:

error_page 500 502 503 504 = @img_fallback;

最新更新