HTTP 502的合法用途

时间:2014-06-13 19:42:46

标签: http

spec声明

502 Bad Gateway

服务器在充当网关或代理时,从尝试完成请求时访问的上游服务器收到无效响应。

假设我有一个"前端"提供HTML页面的服务器。此前端服务器对返回JSON的API服务器进行REST调用。像这样:

+--------+              +----------+    +-----+
|        | start req -> |          | -> |     |
| client |              | frontend |    | api |
|        | get resp <-  |          | <- |     |
+--------+              +----------+    +-----+

如果API服务器将5xx返回给前端服务器,那么502是返回客户端的适当响应,还是500更适合?

1 个答案:

答案 0 :(得分:1)

如果你拥有前端和API服务器,并且它们之间的区别对于客户端是不可见的,那么它们作为一个单元工作,你不应该使用代理响应代码。如果API服务器返回任何5xx代码,那么前端服务器最好返回500,这意味着&#34;我的系统遇到错误&#34;。

另一方面,如果API服务器是别人的,例如Facebook和你期望客户知道你正在代理Facebook的请求,它可能适合回应Facebook的响应代码。但是,通常最好使用500,即使Facebook返回502,因为来自它们的502意味着他们的下游服务器之一失败,但您对Facebook的请求是否成功。