Se você estiver executando uma configuração de proxy Nginx, pode ter o seguinte erro em seu log:
$ tail -f error.log [error] 19896#0: upstream sent too big header while reading response header from upstream, client: 10.5.120.6, server: host.tld, request: "GET /path/to/file.php HTTP/1.1", upstream: "", host: "host.tld" [error] 19899#0: upstream sent too big header while reading response header from upstream, client: 10.5.120.6, server: host.tld, request: "GET /path/to/file.php HTTP/1.1", upstream: "", host: "host.tld"
Em sua configuração do proxy Nginx, você provavelmente terá algo muito semelhante a isto:
server { listen 80; server_name host.tld; location / { proxy_pass http://upstream; ... } }
Para resolver esse problema, aumente os buffers de proxy que o Nginx usa. Antes de o Nginx enviar uma resposta de volta para o visitante, ele irá armazenar em cache o pedido que teve que fazer a partir do seu upstream. No entanto, existem buffers limitados disponíveis para armazenar tal resposta. Se os cabeçalhos HTTP contêm mais informações do que o previsto, esses buffers de proxy pode ficar saturados, e o Nginx vai recusar o pedido com o erro “upstream sent too big header while reading response header from upstream” em seu log.
Para resolver isso, adicione a configuração proxy_buffer_size no seu bloco de localização.
server { listen 80; server_name host.tld; location / { proxy_pass http://upstream; ... proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } }
Essa mudança aumenta o buffer de proxy do Nginx de 4KB (padrão) para 128KB, geralmente grande o suficiente para armazenar em cache qualquer resposta do backend sem representar um risco para o seu servidor. Afinal de contas, esse servidor tem agora que atribuir mais memória para o buffer a cada resposta do backend.
***
Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/nginx-proxy-upstream-sent-big-header-reading-response-header-upstream/