gpt4 book ai didi

nginx - HTTP 响应代码 500 与 502 还是 503?

转载 作者:行者123 更新时间:2023-12-04 13:00:50 24 4
gpt4 key购买 nike

走过HTTP response codes ..并了解这些响应代码(rcodes)代表什么

但我不确定在下面的场景中会向客户端/消费者(比如浏览器)发送什么 rcode。我使用 NGINX 作为反向代理,使用 Apache 作为 HTTP
服务器在 NGINX 后面运行 Web 应用程序(比如应用程序)。

几个场景

  • 运行时错误发生在应用程序中,它抛出 rcode 为 500(默认情况下运行时错误代码)。我的理解是nginx会继续抛出500而不转换
    它到502?
  • 应用程序已关闭或不可用。我的理解是 nginx 在这种情况下会抛出 503 而不是 502 ?
  • 应用程序需要比 nginx 默认连接超时更多的时间来处理。我的理解是 nginx 在这种情况下会抛出 504 ?
  • 如果以上所有点都正确,不确定 nginx 何时会抛出 502 ? NGINX 什么时候会把从上游服务器收到的响应视为无效响应?
  • 最佳答案

  • 只要 NGINX 没有遇到从 Apache 联系/获取数据的问题,它就不会更改应用程序中的 500。例如。您的应用程序很可能会生成 500,但 NGINX 与 Apache 通信中的问题将导致不同的 50x,因此 50x 是客户端将看到的。
  • 如果 Apache 完全关闭,您应该得到 502(坏网关),因为在您的设置中,Apache 是 NGINX 的网关。如果 NGINX 不以某种方式“喜欢”Apache 的响应,也会发生同样的情况,例如当 Apache 发送的响应头超过 NGINX 的 proxy_buffer_size
  • 是的,当 Apache/app 超时与 NGINX 超时相关时,您应该得到 504(网关超时)
  • 参见第 2 点。以下内容:NGINX 将简单地传递来自上游的任何响应代码(如网关 = Apache),因此不需要考虑给定响应在响应代码方面是否无效,通过默认。

  • 您可以让 NGINX 考虑来自 Apache 的错误响应代码,并通过使用 proxy_intercept_errors 采取不同的行动。 , 结合 error_page , 可以让您“重写”来自 Apache 的响应代码/错误消息,例如将应用程序故障“伪装”为 Service Unavailable :
    error_page 500 =503 /503.html;
    proxy_intercept_errors on;

    关于nginx - HTTP 响应代码 500 与 502 还是 503?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57448178/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com