【问题标题】:502 Bad Gateway error - upstream sent too big header while reading response header from upstream502 Bad Gateway error - 上游从上游读取响应标头时发送的标头太大
【发布时间】: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;
}

请帮我解决这个问题。

【问题讨论】:

    标签: google-app-engine nginx-config app-engine-flexible google-app-engine-php


    【解决方案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请求数据误解了它。感谢您对朱莉王的支持。
    猜你喜欢
    • 2017-04-09
    • 2019-01-17
    • 1970-01-01
    • 2020-01-15
    • 2014-11-03
    • 2019-12-21
    • 2018-06-11
    • 2015-08-08
    • 2015-10-26
    相关资源
    最近更新 更多