502 Bad Gateway error - 上游从上游读取响应标头时发送的标头太大

Posted

技术标签:

【中文标题】502 Bad Gateway error - 上游从上游读取响应标头时发送的标头太大【英文标题】:502 Bad Gateway error - upstream sent too big header while reading response header from upstream 【发布时间】:2019-12-09 04:14:49 【问题描述】:

我在 Google App Engine 中使用 wordpress。当我创建一个 POST API 时,得到一个错误:“从上游读取响应标头时,上游发送了太大的标头”。返回 502, Bad Gateway, nginx

我在 POST API 中发送的数据(JSON)大约为 4kb。如果数据发送到 2kb 以下 API 返回成功。

我尝试了 App Engine 标准环境和柔性环境,但遇到了同样的问题。

根据此链接: upstream sent too big header while reading response header from upstream

使用缓冲区修改 nginx-app.config 文件将解决此问题。但它不起作用。

在 App Engine 中,默认的 nginx-app.config 如下所示。

location / 
    try_files $uri /index.php?q=$uri&$args;


location ~ ^/wp-admin 
    try_files $uri $uri/index.php?$args;

不确定我需要在哪里添加这些代理缓冲区。

我尝试在默认位置内添加代理缓冲区,如下所示,但没有帮助。

location / 
    try_files $uri /index.php?q=$uri&$args;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;

请帮我解决这个问题。

【问题讨论】:

【参考方案1】:

这是预期行为,因为 App Engine 的 nginx 配置使用的是 4K 的默认 proxy_buffer_size。

解决方法是发出累积低于此限制的 HTTP 标头。有一个开放的功能请求来增加这个,但它似乎不太可能增加到 128K。如果增加到 128K 是您的用例的唯一解决方案,我建议使用此 issue tracker 创建一个请求,并包括业务影响以说明对该功能的需求。

【讨论】:

感谢 Julie Wang 的回复。抱歉,我无法理解您的解决方法。我什至尝试将缓冲区值减小到 16k,但没有奏效。 如前所述,您需要减少作为一个整体低于此 4K 限制的 HTTP 标头。限制似乎与 proxy_buffer_size 有关,因此减少到 4K 应该可以让您完成 API 调用。作品中有一项功能会增加限制 8k 以允许更大的标头块,但它可能需要一个多月(或更长时间)才能推出,所以我建议在此之前使用解决方法。 我还有两个澄清。 1)实际上我发送的数据不在 HTTP Header 中,它是在 POST API Body 中发送的。 2)在灵活的环境中,即使对于 3kb 左右的数据,我也会收到此错误。在标准环境中,即使对于大于 1kb 的数据,我也会遇到错误。 如果您使用的新缓冲区配置与原始帖子不同,您能否提供它?也许有关配置的其他问题是问题所在。另外我注意到大多数其他错误示例都比提供的要长,如果您仍然遇到错误,您可以提供完整的错误消息 实际上我遇到的问题与http响应有关。我用http请求数据误解了它。感谢您对朱莉王的支持。

以上是关于502 Bad Gateway error - 上游从上游读取响应标头时发送的标头太大的主要内容,如果未能解决你的问题,请参考以下文章

nginx 502 bad gateway tomcat怎么解决

当我尝试与 alexa 连接时,Ngrok 上出现错误 502 Bad Gateway

502 Bad Gateway error - 上游从上游读取响应标头时发送的标头太大

打开网站有时出现502 Bad Gateway,怎么解决?

服务器域返回 502 Bad Gateway - Nginx

502 bad gateway nginx怎么退出