我的 nginx 配置中有這個設定:
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;
}
這很有效,它首先嘗試代理,如果有任何錯誤,然后嘗試 try_files,但問題是,如果代理回傳任何錯誤,如 502,并且 try_files 找到影像,我們仍然會得到 502 狀態代碼,即使影像本身加載。
我們如何確保在出現錯誤的情況下不會在回應中使用從代理發送的狀態?
uj5u.com熱心網友回復:
當指定的錯誤處理程式將由另一個上游處理時(例如,當您有類似的東西error_page 502 /error_handler.php將由 PHP-FPM 后端處理時)或者當錯誤處理程式是一個命名位置時,可以告訴 nginx 該處理程式可以更改 HTTP使用=標志的回應代碼:
error_page 500 502 503 504 = @img_fallback;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360687.html
標籤:nginx
