NGINX 返回 HTTP 502,但在日志中返回 HTTP 200

NGINX returning HTTP 502, but HTTP 200 in the logs

我无法调查 NGINX 实例返回的 HTTP 502 响应。

在浏览器中发生这种情况时:

这是我在日志中看到的:

10.244.1.82 - - [14/Apr/2022:09:21:26 +0000] "GET /add HTTP/1.1" 200 3811
"https://myapplication.com/bar" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.79 Safari/537.36"

还有什么地方可以查找 HTTP 502 NGINX 响应的原因?

我正在使用 NGINX 作为反向代理。它将流量转发到 PHP Zend 应用程序。在我到达这里之前,我得到了 HTTP 502 并且日志提到 upstream sent too big header while reading response header from upstream,所以我增加了缓冲区大小.现在日志显示 HTTP 200,但浏览器中的结果没有改变。

原来我忘记了我正在检查日志的客户端和 NGINX 实例之间还有另一个 NGINX。

我正在使用 Kubernetes Ingress NGINX Controller. I needed to add the following two annotations to my Ingress configuration (documentation):

nginx.ingress.kubernetes.io/proxy-buffers-number: "8"
nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"