Tôi đang sử dụng Nginx trước mặt kỳ lân. Khi ứng dụng được tải cao và tất cả các công nhân kỳ lân đang bận nginx sẽ trả về một câu trả lời 502 nói rằng cổng bị định cấu hình sai. Tôi ok với hành vi này, nhưng trong tình trạng này tôi muốn nginx trả lại một mã phản hồi 503 (máy chủ bận rộn, hãy thử lại sau) mà là một phản ứng thích hợp hơn nhiều.Thay đổi mã trạng thái Nginx trả về khi con kỳ lân ngược lại đang bận
Tôi thấy câu trả lời này: Is it possible to change the HTTP status code returned when proxy_pass gateway is down in nginx?
trong đó mô tả làm thế nào để viết lại một số mã trạng thái trở về từ proxy ngược dòng:
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;
}
Nhưng có 2 vấn đề với điều này:
- Ứng dụng ngược dòng đôi khi trả về 502 mã phản hồi cho các tình huống hợp lệ cần được giữ lại
- Tôi không tin rằng proxy ngược dòng thực sự trả lại mã trạng thái sai lệch này, nhiều khả năng nginx không thể đặt mục trên bộ đệm (tcp?) Và sau đó nginx trả về mã trạng thái gây hiểu lầm.
Có cách nào tôi có thể kiểm soát mã trạng thái do nginx trả về trong tình huống này sao cho nó là 503 thay vì 502?
Tại sao bạn đặt 'proxy_intercept_errors on;' nếu bạn không muốn chặn lỗi từ proxy? Và tại sao bạn nghĩ rằng "nginx trả về mã trạng thái gây hiểu nhầm"? – VBart
Ví dụ mã nếu từ câu hỏi được tham chiếu bên trong câu hỏi của tôi, không phải mã của tôi. Tôi nghĩ rằng nginx trả về mã trạng thái gây hiểu lầm vì 502 được trả lại khi máy chủ web ngược dòng không có bất kỳ dung lượng bổ sung nào. Máy chủ không được định cấu hình sai, nó chỉ bận, đó phải là 503. – Macdiesel
Làm thế nào nginx có thể biết rằng máy chủ đang bận nếu nó không phản hồi đúng cách? – VBart