5
我在獨角獸前使用Nginx。當應用程序處於高負載狀態並且所有獨角獸工作人員都忙時,nginx將返回502響應,說明網關配置錯誤。我對這種行爲很滿意,但在這種情況下,我希望nginx能夠返回一個503響應代碼(服務器忙,稍後再試),這是一個更合適的響應。更改Nginx在上游獨角獸繁忙時返回的狀態碼
我看到了這樣的回答: Is it possible to change the HTTP status code returned when proxy_pass gateway is down in nginx?
介紹如何重寫一些狀態代碼從上游代理返回:
location/{
proxy_pass http://backend;
proxy_intercept_errors on;
error_page 502 503 504 =503 @proxyisdown; # always reply with 503
}
location @proxyisdown {
add_header Retry-After 500;
index my_pretty_error_page.html;
}
但也有2個問題與此:
- 上游應用程序有時會返回502應該保留的有效情況的響應代碼
- 我不確定上游代理實際上是否返回了這個錯誤的狀態碼,更有可能nginx不能將該項放在(tcp?)緩衝區,然後nginx返回誤導性的狀態碼。
有沒有什麼辦法可以控制nginx在這種情況下返回的狀態碼,使它成爲503而不是502?
如果您不想攔截來自代理的錯誤,爲什麼要在'; proxy_intercept_errors'上設置';';爲什麼你認爲「nginx返回誤導性的狀態碼」? – VBart
代碼示例如果來自我的問題中引用的問題,而不是我的代碼。 我認爲nginx返回一個誤導性的狀態代碼,因爲當上遊web服務器沒有任何額外容量時返回502。服務器沒有配置錯誤,它只是很忙,應該是503. – Macdiesel
如果服務器沒有正確響應,nginx如何知道服務器正忙? – VBart