nginx-上游从上游读取响应标头时发送了太大的标头

时间:2019-09-14 07:36:18

标签: python linux nginx flask nginx-config

我有一个用python和flask框架编写的电子商务项目,我在会话中保留购物车信息,当我尝试向会话中添加产品时,nginx会出现以下错误:

  

上游从上游读取响应标头时发送了太大的标头,客户端:xx.xxx.xx.xxx,服务器:mysite.com,请求:“ POST / add_to_cart HTTP / 1.1”,上游:“ uwsgi:// unix :/path/uwsgi.sock:“,主持人:“ mysite.com”

当我在会话中有很多信息时,会发生这种情况,

我尝试添加fastcgiproxy_buffer参数,但仍然无法正常工作,这是我的nginx conf文件:

server {
  listen       443 ssl;
  server_name  mysite.com;

  ssl_certificate       /path/nginx.pem;
  ssl_certificate_key   /path/nginx.key;

  include              /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam          /etc/letsencrypt/ssl-dhparams.pem;

  access_log      /path/access.log main;

  fastcgi_buffers  16 16k;
  fastcgi_buffer_size 32k;

  proxy_buffering             on;
  proxy_buffer_size         128k;
  proxy_buffers           4 256k;
  proxy_busy_buffers_size   256k;

  location /static/ {
    alias         /path/web/static/;
    access_log    off;
    index         index.html index.htm;
  }

  location / {
    try_files       $uri @uwsgi;
    root            /path/www/;
    index           index.html index.htm;    
  }

  location @uwsgi {
    include uwsgi_params;
    uwsgi_pass  unix:/path/web/uwsgi.sock;
  }
} 

1 个答案:

答案 0 :(得分:0)

如果您能够通过POST重建确切的curl请求,或者通过其他方式测量实际的标头大小,则可以为uwsgi_buffer_size指定适当的大小(与您的情况)。

这是我的post,对类似的指令proxy_buffer_size有所了解。 *_buffer_size指令很多,每个类似“代理”的NGINX模块都有一个指令(fastcgi,proxy,uwsgi),但是您如何进行它们的调整(以及它们的工作原理)是相同的。

您可以直接将其放置在server块中,而无需进行测量:

uwsgi_buffer_size 16k; 
uwsgi_busy_buffers_size 24k;