use*_*603 6 web-applications nginx httpresponse http-response-codes nginx-reverse-proxy
浏览HTTP 响应代码.. 并了解这些响应代码(rcodes)代表什么
但我不确定在下面的情况下将向客户端/消费者(例如浏览器)发送什么 rcode。我使用 NGINX 作为反向代理,使用 Apache 作为 HTTP 服务器,在 NGINX 后面运行 Web 应用程序(例如应用程序)。
几个场景
应用程序中发生运行时错误,抛出 rcode 为 500(默认情况下运行时错误代码)。我的理解是nginx会继续抛出500而不将其转换为502?
应用程序已关闭或不可用。我的理解是 nginx 在这种情况下会抛出 503 而不是 502 ?
应用程序花费的时间比 nginx 默认连接超时时间还要长。我的理解是nginx在这种情况下会抛出504?
如果以上所有点都正确,不确定 nginx 何时会抛出 502 ?NGINX何时会认为从上游服务器收到的响应为无效响应?
NGINX 不会更改应用程序中的 500 ,只要它没有遇到从 Apache 联系/获取数据的问题。例如,您的应用程序完全有可能生成 500,但 NGINX 与 Apache 的通信出现问题将导致不同的 50x,因此客户端将看到 50x。
如果 Apache 完全关闭,您应该会收到 502(错误网关),因为在您的设置中,Apache是NGINX 的网关。如果 NGINX 在某种程度上不“喜欢”Apache 的响应,例如当 Apache 发送的响应的标头超出 NGINX 的标头时,也会发生同样的情况proxy_buffer_size
是的,当 Apache/app 因 NGINX 超时而超时时,您应该收到 504(网关超时)
请参见第 2 点。以及以下内容:NGINX 将简单地传递来自上游的任何响应代码(如 gateway = Apache),因此它不需要考虑给定响应在响应代码方面是否无效,通过默认。
您可以让 NGINX 考虑来自 Apache 的错误响应代码,并通过使用 来采取不同的行为proxy_intercept_errors,它与 结合使用error_page,可以允许您“重写”来自 Apache 的响应代码/错误消息,例如将应用程序故障“伪装”为Service Unavailable:
error_page 500 =503 /503.html;
proxy_intercept_errors on;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11474 次 |
| 最近记录: |