3

I'm using wordpress in Google App Engine. When I make a POST API, getting an Error : "upstream sent too big header while reading response header from upstream". which returns 502, Bad Gateway, nginx

The data(JSON) i'm sending in POST API is around 4kb. If the Data is sent below 2kb API returns success.

I tried App Engine Standard and Flexible Environment, but facing the same issue.

As per this link: upstream sent too big header while reading response header from upstream

Modifying the nginx-app.config file with buffers will fix this issue. But it's not working.

In App Engine, the default nginx-app.config looks like.

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

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

Not sure where I need to add these proxy buffers.

I tried adding the proxy buffers inside the default locations as shown below, but it didn't help.

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;
}

Kindly help me to fix this issue.

Dev
  • 83
  • 1
  • 1
  • 5

1 Answers1

1

This is expected behavior as the nginx config for App Engine is using the default proxy_buffer_size which is 4K.

The workaround is to emit HTTP headers that are cumulatively under this limit. There is an open feature request to increase this however it seems it is unlikely to be increased to 128K. If increasing to 128K is the only solution for your use case I suggest creating a request for it with this issue tracker and include the business impact to illustrate the need for the feature.

Julie Wang
  • 101
  • 4
  • Thanks Julie Wang for your reply. Sorry I couldn't understand your workaround. I have even tried reducing the buffer values to 16k, but it didn't work. – Dev Aug 01 '19 at 02:53
  • As mentioned, you will need to reduce HTTP headers that are as a whole under this 4K limit. The limit seems to be with the proxy_buffer_size so reducing to to 4K should allow you complete the API call. There is a feature in the works that would increase the limit 8k to allow for larger header blocks however it will likely be over a month (or more) before it is rolled out so I suggest using the workaround until then. – Julie Wang Aug 01 '19 at 14:45
  • I have two more clarification. 1) Actually data i'm sending is not in HTTP Header, it is sent in POST API Body. 2) In Flexible Environment i'm getting this error even for data around 3kb. In Standard Environment even for data greater than 1kb i'm getting the error. – Dev Aug 02 '19 at 09:31
  • Can you provide the new buffer configurations you are using if it differs from the original post? Perhaps something else about the configuration is the issue. Also I noticed that most other examples of the error is longer than provided, if you are still experiencing the error can you provide the full error message – Julie Wang Aug 02 '19 at 13:28
  • Actually the issue i'm getting is related with http response. I misunderstood it with http request data. Thanks for your support Julie Wang. – Dev Aug 02 '19 at 17:53